在他应用一些过滤器之后,我有兴趣获取用户在网格视图中看到的所有数据。例如,原始网格的数据源包含 10 条记录,但用户应用过滤器后仅显示 5 条记录,我想将这 5 条记录放入列表中。如何实现?
问问题
286 次
2 回答
0
假设您的网格绑定了某个集合,那么在回发时,您可以获取 gridview 的数据源,应用您的过滤器,并将其保存到一个新集合中。
就像是:
var datasource = yourGridView.DataSource as List<someType>;
var filteredResults = datasource.Where( ... ); // apply your filters inside the Where
显然,将示例变量名称/类型替换为您在代码中使用的内容。
于 2013-03-04T14:44:34.523 回答
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();
}
}
于 2013-03-04T14:56:58.360 回答