在DataTable select方法中没有显示任何记录?

时间:2013-11-19 13:35:22

标签: c# asp.net datatable

我的代码:

    DataTable dt = new DataTable();
    dt.Columns.Add("id", typeof(int));
    dt.Columns.Add("name", typeof(string));

    dt.Rows.Add(1, "ali");
    dt.Rows.Add(2, "reza");
    dt.Rows.Add(3, "mehdi");
    dt.Rows.Add(4, "alireza");
    dt.Rows.Add(4, "amirali");

    var result = dt.Select("name like '%ali%'");
    GridView1.DataSource = result;
    GridView1.DataBind();

问题:

   not show any record in GridView

3 个答案:

答案 0 :(得分:3)

为什么不设置过滤器?

dt.DefaultView.RowFilter ="name like '%ali%'";
GridView1.DataSource = dt.DefaultView;
GridView1.DataBind();

var result = dt.Select("name like '%ali%'").CopyToDataTable();

在你的情况下,DataRow[]的结果可能是绑定失败的原因。

答案 1 :(得分:2)

Gridview没有显示任何行,因为select返回datarow数组,你不能将datarow数组绑定到gridview。

你可以试试这个

var result = dt.Select("name like '%ali%'");
GridView1.DataSource = result.Select(r => r.ItemArray[0]);
GridView1.DataBind();

答案 2 :(得分:0)

如果问题仍然存在,您可以尝试使用此代码。

            DataTable dt = new DataTable("Trial");
            dt.Columns.Add("id", typeof(int));
            dt.Columns.Add("name", typeof(string));

            dt.Rows.Add(1, "ali");
            dt.Rows.Add(2, "reza");
            dt.Rows.Add(3, "mehdi");
            dt.Rows.Add(4, "alireza");
            dt.Rows.Add(4, "amirali");

            DataRow[] result = dt.Select("name like '*%ali%*'");
            DataTable dtnew = new DataTable();
            dtnew.Columns.Add("id", typeof(int));
            dtnew.Columns.Add("name", typeof(string));
            foreach (DataRow dr in result)
            {
                dtnew.ImportRow(dr);
            }
            GridView1.DataSource = dtnew;    
            GridView1.DataBind();