【问题标题】:Best way to have a variable amount of DataGrids?拥有可变数量的 DataGrid 的最佳方法是什么?
【发布时间】:2015-08-04 20:46:22
【问题描述】:

所以我有一个 SQL 数据库,里面有很多表。我试图在一个简单的 asp.net 站点上的 Datagrid 中显示表格。每个表都有自己的数据网格。我遇到的问题是,根据用户选择的选项,我的数据集将从 3-7 个表中返回。因此,所有表都未命名,例如:

DataSet dataSet = new DataSet();
SqlDataAdapter dataAdpt = new SqlDataAdapter();
...
dataAdpt.SelectCommand = m_cmd;
dataAdpt.Fill(dataSet);

然后我将其返回给将创建数据网格的方法。这是我所拥有的:

private void createDataGrid(DataSet dataSet)
{
    foreach (DataTable table in dataSet.Tables)
    {
        DataGrid grid = new DataGrid();
        grid.DataSource = new DataView(table);
        grid.DataBind();
    }
}

但因为网格没有在我的 Default.aspx 中定义,所以它没有显示任何内容。我是 asp.net 的新手,因此非常欢迎提出如何更好地完成此任务的建议。但总的来说,有没有一种方法可以动态地将表格“添加”到页面中?

【问题讨论】:

  • 有一个Repeater,里面有一堆数据网格。将数据表集合绑定到转发器,并让转发器将每个数据表绑定到数据网格。
  • 您当然应该使用@Servy 提到的方法。这是到目前为止在这种情况下的最佳实践。
  • 我同意它更优雅,但如果 OP 是初学者并且他只是想看到结果,那么工作量要大得多。
  • @Cortright 导致他不知道如何解决的问题的可能性大大降低。给他一些看似可行的东西,但这会导致他没有能力解决的各种问题,这是不负责任的。他应该花时间学习如何正确解决问题,而不是先被一堆糟糕的做法烧毁,然后再去学习。
  • 好吧,让我们在这里为他声明一个免责声明。 OP,如果您想在将数据网格放在页面上之后对它们进行任何操作,那么使用中继器方法会更好。但是,如果您只想显示数据,仅此而已 - 占位符方法很好。

标签: c# sql asp.net


【解决方案1】:

在aspx中的页面上放置一个占位符。

<asp:placeholder id="phGrids" runat="server" />

然后,在您粘贴的代码隐藏中的数据绑定之后,执行:

phGrids.Controls.Add(grid);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-01
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 2010-09-21
    • 2021-12-13
    相关资源
    最近更新 更多