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

本文关键字:数据库 绑定 网格 数据 dt 何使用 select 动态 | 更新日期: 2023-09-27 18:00:06

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

  • 对于第一个网格,我需要从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应该被绑定在第二个网格ie(c00-d49)上,剩下的D中的序列应该绑定到第三个网格(即D50-D89)上,序列E应该被绑定至第四个网格(例如E00-E89)上应该这样做。我该怎么做?

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

我建议您从初始DataTable中筛选范围,并将每个范围分配给一个新的DataTable。这里有一个例子,当然您将继续查询您的数据,但我已经手动构建了数据以进行演示。也共享为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();