如何使用 asp.net c# 并排动态添加网格视图

本文关键字:动态 添加 网格 视图 何使用 asp net | 更新日期: 2023-09-27 18:32:55

我正在创建一个页面,该页面在多个网格视图中显示一些详细信息。我之所以说几个,是因为网格视图的数量不是恒定的。我在aspx页面上有一个面板,并动态向其添加网格视图。

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);
            }

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

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

如何使用 asp.net c# 并排动态添加网格视图

您必须在面板中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);
}
如果使用

表控件,则可以创建一行,并将每个网格添加为单元格,这将强制实施并行要求:

TableCell cell = new TableCell();
cell.Controls.Add(grd);
table.Rows(0).Cells.Add(cell);

类似的东西;不确定上面的表 API 示例是否 100% 正确,但希望您能理解这个想法。

也许你只需要添加一些 css?诸如此类:

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

你可以做这样的事情

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);