如何使用asp.net c#并排动态添加gridviews

时间:2014-12-03 15:29:27

标签: c# asp.net gridview panel

我正在创建一个页面,其中显示了几个网格视图中的一些细节。我说几个因为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);
            }

但我的问题是网格视图正在将添加到另一个之下。我希望他们能够并肩而立。我怎样才能做到这一点?

注意:面板不是强制性的。其他任何东西都可以在其位置使用

4 个答案:

答案 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}}