【问题标题】:How to dynamically add gridviews side by side using asp.net c#如何使用asp.net c#动态并排添加gridviews
【发布时间】:2014-12-03 15:29:27
【问题描述】:

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

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

注意:面板不是强制性的。其他任何东西都可以代替它

【问题讨论】:

  • 以下所有答案均符合我的要求。但是,为了简单起见,我将使用 float="left"。还添加了 margin-left 以在两者之间创建间隙

标签: c# asp.net gridview panel


【解决方案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);
}

【讨论】:

  • 你的方法有效,但我在类中添加了 margin-left,否则网格视图会粘在一起
  • @nitinvertigo,是的,您可以添加边距或填充。很高兴它有效。
【解决方案2】:

如果您使用表格控件,则可以创建一行,并将每个网格添加为单元格,这将强制执行并排要求:

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

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

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

【讨论】:

    【解决方案3】:

    也许你只需要添加一些CSS? 像这样:

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

    【讨论】:

      【解决方案4】:

      你可以这样做

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-16
        • 1970-01-01
        • 1970-01-01
        • 2013-02-20
        • 1970-01-01
        相关资源
        最近更新 更多