2013-03-04 5 views
0

Я заинтересован в получении всех данных, которые пользователь видит в виде сетки, после того как он применит некоторые фильтры. Например, источник данных исходной сетки содержит 10 записей, но пользователь применяет фильтр, после которого все еще отображаются только 5, я хочу взять эти 5 и поместить их в список. Как это можно сделать?grid view отфильтрованные данные

+0

Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

Это зависит от того, как вы фильтруете GridView. Вы пишете процедуры для этого? –

+0

Вы получите лучшие ответы, если вы предоставите примерный код. Какие фильтры? Как они применяются? И т. Д. –

ответ

0

Предполагая, что ваша сетка привязана к какой-либо коллекции, а затем по обратной стороне вы можете захватить источник данных gridview, применить фильтры и сохранить их в новой коллекции.

Что-то вроде:

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

Очевидно, заменить примеры имен переменных/типов с тем, что вы используете в своем коде.

+0

Я должен указать, что я интерпретировал ваш вопрос как «как я могу действовать в коллекции, связанной с gridview», а не «как применять фильтры к коллекции». Если вы спрашиваете последнего, пожалуйста, предоставьте немного больше информации и, если это возможно, код. –

0

Heres миленького примера своего рода встроенный способ фильтрации с видом сетки:

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