我正在创建一个页面,其中显示了几个网格视图中的一些细节。我说几个因为gridviews的数量不是常数。我在aspx页面上有一个面板,并动态添加gridviews。
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);
}
但我的问题是网格视图正在将添加到另一个之下。我希望他们能够并肩而立。我怎样才能做到这一点?
注意:面板不是强制性的。其他任何东西都可以在其位置使用
答案 0 :(得分:1)
如果使用表格控件,则可以创建一行,并将每个网格添加为单元格,这将强制执行并排要求:
TableCell cell = new TableCell();
cell.Controls.Add(grd);
table.Rows(0).Cells.Add(cell);
这样的事情;不确定上面的Table API示例是否100%正确,但希望您明白这一点。
答案 1 :(得分: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);
答案 2 :(得分:1)
也许你只需要添加一些CSS? 那样:
grd.DataSource = dt; // some data source
grd.Style["float"] = "left"; // css
grd.DataBind();
答案 3 :(得分:1)
您必须将float
面板中的元素left
设为grd.Attributes.Add("class", "float-left");
。要在代码中实现这一点,在向面板添加网格之前,请执行以下操作:
float-left
css中的.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);
}
所以你的代码看起来像是:
{{1}}