有类函数支持过滤啊,到msdn上找

解决方案 »

  1.   

    参考:
    http://blog.csdn.net/allenting/archive/2005/01/27/271072.aspx
      

  2.   

    你的问题没有说清楚,初步的结果是不是这样:
    public bool GetDataAndBind(ref System.Web.UI.WebControls.DataGrid dataGride)
    {
    System.Data.DataSet dataSet = new System.Data.DataSet();
    //获取数据省略;
    System.Data.DataView dataView = new System.Data.DataView(dataSet.Tables["目标数据表"]);
    dataView.Sort = "条件表达式";
    dataGride.DataSource = dataView;
    dataGride.DataBind();
    }
      

  3.   

    回楼上的,:
    不是的,我是想能过dataview的筛选出记录,然后,找出该记录在datagrid的位置,也就是在datagrid是第几行的.还要得出该记录在dataset中是第几行.而那筛选过程我们要区分大小写或者部分匹配.
      

  4.   

    定位的问题,
    http://blog.csdn.net/zhzuo/archive/2005/01/03/238273.aspx
      

  5.   

    举个例子:从dataset中筛选出arrList中的所有记录
    System.Text .StringBuilder  strBuilder=new System.Text.StringBuilder("ProjectNo in (");
    foreach(object item in arrList)
    {
    strBuilder.Append ("'"+item.ToString().Trim()+"',");
    }
    strBuilder.Remove (strBuilder.Length-1,1);    //将最后一个Comma去掉
    strBuilder.Append (")");
     DataRow [] dataRows =ds.Tables [0].Select(strBuilder.ToString ());
     //找出满足条件的所有行
    .........
    foreach(DataRow filterDR in dataRows)
    {
       DataTable dt=(DataTabble)dataGrid1.DataSource  //如果数据原是表的话
       foreach(DataRow dr in dt.Rows)
       {
          .........
       }
    }
      

  6.   

    你可以在strBuilder中像sql的where子句一样,写出你的所有过滤条件.
    你如果还不清楚,我可以给你写一个例子.
      

  7.   

    我知道啊,如果,筛出以后,怎么让筛选出来到记录在DATAGRID中定位啊
      

  8.   

    //样列数据
    private void Form1_Load(object sender, System.EventArgs e)
    {
    DataTable dt =new DataTable("Test");
    dt.Columns.Add("ID",typeof(int));
    dt.Columns.Add("code",typeof(Decimal));
    dt.Rows.Add(new object[]{1,33.1});
    dt.Rows.Add(new object[]{2,34.2});
    dt.Rows.Add(new object[]{3,34.3});
    dt.Rows.Add(new object[]{4,34.4});
    DataView dv = new DataView(dt);
    dataGrid1.SetDataBinding(dv,null);
    }
    //如果你的 数据 没有一个唯一的数据,必须整个行进行匹配
    private void button1_Click(object sender, System.EventArgs e)
    {
    DataView dv = dataGrid1.DataSource as DataView;
    BindingManagerBase bmb = this.BindingContext[dv];
    DataRow[] drArr = dv.Table.Select("code=33.1 and ID=1");
    if (drArr.Length> 0)
    {
    for (int i = 0; i < dv.Count; i++)
    {
       if (dv[i].Row.Equals(drArr[0]))
       {
       bmb.Position = i;

       }
    } }
    }
    //如果有唯一的 id 的化,不过这样会 毁坏 grid 上已经存在的 排序
    private void button2_Click(object sender, System.EventArgs e)
    {
    DataView dv = dataGrid1.DataSource as DataView;
    BindingManagerBase bmb = this.BindingContext[dv];
    dv.Sort = "ID";
    int index = dv.Find(2);
    bmb.Position = index;
    }