2014-12-03 33 views
0

我正在創建一個頁面,它顯示了幾個gridviews中的一些細節。我在說幾個,因爲gridviews的數量是不是常量。我在aspx頁面上有一個面板,並動態地向它添加gridviews。如何動態添加gridviews使用asp.net c#

ASPX代碼:

<asp:Panel ID="pnlResult" runat="server"></asp:Panel> 

aspx.cs代碼

int numOfGroups = some number here; 
      for (int i = 1; i < numOfGroups + 1; i++) 
      { 
       GridView grd = new GridView(); 
       grd.ID = "GridView" + i.ToString(); 
       grd.BackColor = getColor(i); 
       grd.DataSource = dt; // some data source 
       grd.DataBind(); 
       pnlResult.Controls.Add(grd); 
      } 

但我的問題是,GridView的要添加一個另一個下方。我希望他們並肩。我怎樣才能做到這一點?

注:面板不是強制性的。還有什麼可以替代它使用

+0

以下所有答案根據我的要求工作。不過,我只是爲了簡單起見而使用了float =「left」。還增加了margin-left,以便在您的方法工作之間創建 – nitinvertigo 2014-12-03 16:38:02

回答

1

你必須float面板內的元素left。爲了實現這一點在後面的代碼,添加網格面板之前做:

grd.Attributes.Add("class", "float-left"); 

凡在你的CSS float-left類定義爲:

.float-left { 
    float: left; 
} 

所以,你的代碼看起來像:

for (int i = 1; i < numOfGroups + 1; i++) 
{ 
    GridView grd = new GridView(); 
    grd.ID = "GridView" + i.ToString(); 
    grd.BackColor = getColor(i); 
    grd.Attributes.Add("class", "float-left"); //here 
    grd.DataSource = dt; // some data source 
    grd.DataBind(); 
    pnlResult.Controls.Add(grd); 
} 
+0

間的差距,但我在課程中添加了餘量,因爲否則Gridviews會粘在一起 – nitinvertigo 2014-12-03 16:39:17

+0

@ nitinvertigo,是的,你可以添加保證金,或填充。很高興它的作品。 – Habib 2014-12-03 16:53:54

1

如果使用表控制,那麼你可以創建行,並添加每個網格爲單元,這將執行並排側要求:

TableCell cell = new TableCell(); 
cell.Controls.Add(grd); 

table.Rows(0).Cells.Add(cell); 

就是這樣的;不知道上面的Table API示例是否是100%正確的,但希望您能明白。

1

你可以做這樣的事情

Table tbl = new Table(); 
TableRow tr = new TableRow(); 
TableCell tc = new TableCell(); 

btn = new Button(); 
     btn.Text = "Add "; 
     btn.Height = Unit.Pixel(30); 
     btn.Width = Unit.Pixel(100); 

tc.Controls.Add(btn); 

tr.Controls.Add(tc); 
tbl.Controls.Add(tr); 
panel.Controls.Add(tbl); 
1

也許ü只需要添加一些CSS? 這樣的:

grd.DataSource = dt; // some data source grd.Style["float"] = "left"; // css grd.DataBind();