【问题标题】:How to bind data to a dropdownlist after applying filter on the table在表格上应用过滤器后如何将数据绑定到下拉列表
【发布时间】:2018-02-20 05:03:53
【问题描述】:

我想将数据表绑定到下拉列表。但在绑定之前,我将在数据表上应用,这样我只会从数据表中获取选定的行。

我正在使用下面的代码

DataTable table1 = (DataTable)Session["dtTable"];
       ddlSection.DataSource = table.Select("Section like 'Test'");
        ddlSection.DataTextField = "Quest";
        ddlSection.DataValueField = "ouestID";
        ddlSection.DataBind();

我收到一条错误消息,提示“System.Data.DataRow' 不包含名为 'Quest' 的属性” 实际上在将过滤器应用于表后,列名被删除了。

我该如何编写代码?

【问题讨论】:

    标签: c# datatable dropdown


    【解决方案1】:

    正如@rubber423 提到的,table1.Select 将返回 datarow 数组,它不会使用 datacolumn。您可以使用 dataview 进行过滤和绑定到下拉列表,

    DataTable table1 = (DataTable)Session["dtTable"];
    DataView dataView = table1.DefaultView;
    dataView.RowFilter = "Section like 'Test'";
    ddlSection.DataSource = dataView;
    ddlSection.DataTextField = "Quest";
    ddlSection.DataValueField = "ouestID";
    ddlSection.DataBind();
    

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      问题是过滤方法返回一个DataRow数组,所以没有DataColumn。我的幼稚解决方案是from this

      foreach (DataRow row in table.Select("Section like 'Test'")) {
          dataTable.ImportRow(row); //then set dataTable as DataSource
      }
      

      将 DataRow 数组转换为 DataTable 和 DataBind。可能有更好的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多