C# 网格视图过滤数据

C# 网格视图过滤数据,c#,gridview,C#,Gridview,我感兴趣的是在用户应用一些过滤器之后,获取用户在网格视图中看到的所有数据。例如,原始网格的数据源包含10条记录,但是用户应用了一个过滤器,在该过滤器之后,只有5条记录仍在显示,我想将这5条记录放入列表中。如何做到这一点 假设您的网格绑定到某个集合,那么在回发时,您可以获取gridview的数据源,应用过滤器,并将其保存到新集合 比如: var datasource = yourGridView.DataSource as List<someType>; var filteredRes

我感兴趣的是在用户应用一些过滤器之后,获取用户在网格视图中看到的所有数据。例如,原始网格的数据源包含10条记录,但是用户应用了一个过滤器,在该过滤器之后,只有5条记录仍在显示,我想将这5条记录放入列表中。如何做到这一点

假设您的网格绑定到某个集合,那么在回发时,您可以获取gridview的数据源,应用过滤器,并将其保存到新集合

比如:

var datasource = yourGridView.DataSource as List<someType>;
var filteredResults = datasource.Where( ... ); // apply your filters inside the Where
var-datasource=yourGridView.datasource作为列表;
var filteredResults=datasource.Where(…);//在Where中应用过滤器

显然,将示例变量名/类型替换为代码中使用的变量名/类型。

这里有一个很好的小示例,介绍一种内置的过滤网格视图的方法:

protected void btnSearch(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("MyConn");
    SqlCommand cmd = new SqlCommand();
    SqlDataAdapter sda = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();

    cmd.Connection = con;
    cmd.CommandText = "SELECT * FROM CustomerTable WHERE NumberOfCustomer = @NumberOfCustomer";
    cmd.Parameters.AddWithValue("NumberOfCustomer", TextBox1.Text);

    try
    {
        con.Open();
        sda.Fill(dt);
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
    }
    finally
    {
        con.Close();
    }

    GridView1.DataSource = dt;
    GridView1.DataBind();
}
然后将数据源绑定到列表:

protected void bindToList(object sender, EventArgs e)
{
    var datasource = GridView1.DataSource as List<Customers>;

    if ( !IsPostBack )
    {
        DropDownList ddl = new DropDownList();
        ddl.DataTextField = "Name";
        ddl.DataValueField = "Id";
        ddl.DataSource = datasource;
        ddl.DataBind();

        ddl.SelectedValue = list.Find( o => o.Selected == true ).Id.ToString();
    }
}
受保护的void bindToList(对象发送方,事件参数e)
{
var datasource=GridView1.datasource作为列表;
如果(!IsPostBack)
{
DropDownList ddl=新的DropDownList();
ddl.DataTextField=“Name”;
ddl.DataValueField=“Id”;
ddl.DataSource=数据源;
ddl.DataBind();
ddl.SelectedValue=list.Find(o=>o.Selected==true).Id.ToString();
}
}

我已编辑了您的标题。请看“”,其中的共识是“不,他们不应该”。这取决于您如何过滤GridView。你为此编写了例程吗?如果你提供一些示例代码,你会得到更好的答案。什么样的过滤器?它们是如何应用的?基于我对你问题的理解。在select查询中使用“限制”怎么样?或者您可以向我们展示一些示例代码。我应该指出,我将您的问题解释为“如何对gridview绑定到的集合采取行动”,而不是“如何对集合应用过滤器”。如果你问的是后者,那么如果可能的话,请提供更多的见解和一些代码。