2013-03-04 66 views
0

我有兴趣在应用某些过滤器后获取用户在网格视图中看到的所有数据。例如,原始网格的数据源包含10条记录,但用户应用一个过滤器后,只剩下5个过滤器,我想将这5个记录放入一个列表中。这如何实现?网格视图过滤的数据

+0

我编辑了自己的冠军。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2013-03-04 14:40:04

+0

这取决于你如何过滤GridView。你写过那些例程吗? – 2013-03-04 14:44:11

+0

如果您提供了一些示例代码,您将得到更好的答案。什么样的过滤器?他们如何被应用?等。 – 2013-03-04 14:45:36

回答

0

假设您的网格绑定了一些集合,然后在回发中,您可以获取gridview的数据源,应用您的过滤器并将其保存到新的集合中。

喜欢的东西:

var datasource = yourGridView.DataSource as List<someType>; 
var filteredResults = datasource.Where(...); // apply your filters inside the Where 

显然,你使用你的代码是什么代替例如变量名/类型。

+0

我应该指出,我将你的问题解释为更多的“我该如何处理gridview绑定的集合”,而不是“如何将过滤器应用于集合”。如果你问后者,请尽可能提供更多的见解和一些代码。 – 2013-03-04 14:47:28

0

下面有一种内置的方式来筛选网格视图的一个可爱的小例子:

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(); 
    } 
}