如何动态地使用dt.select将数据从数据库绑定到网格?

时间:2016-08-04 10:26:54

标签: c# sql gridview

以下是我用于根据条件显示记录的方法。 我在数据库中插入了很多行,数据应该以这样的方式显示:

  • 表示我需要从A00-B99
  • 绑定的第一个网格
  • 用于来自c00-d49的第二个网格绑定
  • 表示来自d50-d89的第三个网格绑定
  • 用于E00-E89的第四个网格绑定

就像我有这么多的网格,我应该绑定数据,但它不起作用。

  public void BindGrid()
        {

            string query = "select * from tablename";
            SqlDataAdapter da = new SqlDataAdapter(query, conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            DataTable dt = ds.Tables[0];
            Session["dt1"] = dt;
            DataTable dt2 = (DataTable)Session["dt1"];
            DataRow[] dr = dt2.Select("Text >='A%' AND Text >='B%' OR Text ='C%'");
            DataTable Newdt = dr.CopyToDataTable<DataRow>();
            grd1.DataSource = Newdt;
            grd1.DataBind();

        } 

在文本列中以A和B开头的数据被取消,从c到z被绑定到我的第一个网格,但是A和B的系列应绑定到第一个网格,C和D系列应该绑定绑定到第二个网格即(c00-d49)并且剩余在D中的系列应绑定到第三个网格(即D50-D89),而系列E应绑定到第四个网格(即E00-E89),就像应该绑定到第四个网格完成。 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我建议您从初始DataTable中过滤范围,并将每个范围分配给新的DataTable。这是一个示例,当然您将继续查询您的数据,但我已手动构建数据以进行演示。另外shared as LinqPad Query

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Code", Type.GetType("System.String")));

DataRow r = dt.NewRow();
r[0] = "A00";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "B50";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "B99";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "c00";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "c30";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "c49";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "c50";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "d59";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "d50";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "d60";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "d89";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "E00";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "E50";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "E89";
dt.Rows.Add(r);

r = dt.NewRow();
r[0] = "E90";
dt.Rows.Add(r);

var range1 = dt.AsEnumerable().Where (d => d[0].ToString().CompareTo("A") >= 0 && d[0].ToString().CompareTo("B99") <= 0);
DataTable TableRange1 = range1.CopyToDataTable();

var range2 = dt.AsEnumerable().Where (d => d[0].ToString().CompareTo("c00") >= 0 && d[0].ToString().CompareTo("d49") <= 0);
DataTable TableRange2 = range2.CopyToDataTable();

var range3 = dt.AsEnumerable().Where (d => d[0].ToString().CompareTo("E00") >= 0 && d[0].ToString().CompareTo("E89") <= 0);
DataTable TableRange3 = range3.CopyToDataTable();