如何从DataSource RowFilter检索对象列

时间:2014-02-26 18:06:32

标签: c# asp.net datatable datasource rowfilter

我目前正在尝试从DataTable中检索一个列,该列包含具有某些确定列内对象的列。

让我们看看:

(this.CohortGrid.DataSource as DataTable).DefaultView.RowFilter =  string.Format("CohortFormation.Name LIKE '*{0}*'", ddlFormation.SelectedItem.Text);

我在DataTable中有这些列:

[0]:Id

[1]:姓名

[2]:状态

[3]:群组形式

[4]:RoomCol

[5]:InstructorCol

[6]:EmployeeCol

列CohortFormation是一个包含Id和名称的对象。

所以,我正在尝试像CohortFormation.Name LIKE一样检索同类群组的名称 但它让我回答:

  

无法找到列

在网格视图TemplateField中,我可以<%# Eval("CohortFormation.Name") %>,它可以很好地工作。但在代码背后我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我刚刚找到了一个解决方案,而且效果很好!

我遍历DataTable并删除不等于DropDownList中选择的值的行 - &gt; ddlFormation。

有代码:

  CohortCollection cohortCol = (CohortCollection)Session["cohortCol"];

        foreach(Cohort cohort in cohortCol.ToList())
        {
            if(cohort.Status.Id != int.Parse(ddlFormation.SelectedItem.Value))
            {
                cohortCol.Remove(cohort);
            }
        }

        this.CohortGrid.DataSource = cohortCol;
        this.CohortGrid.DataBind();

所以,诀窍是循环列表而不是DataTable,如果它不等于我们删除对象。最后,我们绑定数据。

完美无缺!