Я создал список, который заполняется списком гитар из базы данных при загрузке страницы следующим образом:
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["GuitarsLTDBConnectionString"].ToString());
SqlCommand cmd = new SqlCommand("SELECT * FROM Guitars", con);
SqlDataAdapter da = new SqlDataAdapter(cmd.CommandText, con);
DataTable dt = new DataTable();
da.Fill(dt);
lvGuitars.DataSource = dt;
lvGuitars.DataBind();
}
Следующий код фильтрует этот список гитар по определенной марке, когда пользовательпроверяет флажок, соответствующий этому make
protected void chkOrgs_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)lvGuitars.DataSource;
DataView dv = new DataView(dt);
if (chkOrgs.SelectedValue == "Gibson")
{
dv.RowFilter = "Make = 'Gibson' OR Make='Fender'";
}
lvGuitars.DataSource = dv.ToTable();
lvGuitars.DataBind();
}
Теперь, что я хочу сделать, это иметь возможность сортировать последние данные, которые присутствуют в просмотре списка.Это означает, что если перед фильтрацией нажать кнопку сортировки, она должна отсортировать все данные.Если после фильтрации щелкнуть сортировку, она должна отсортировать отфильтрованные данные.Я использую следующий код, который запускается при нажатии LinkButton
protected void lnkSortResults_Click(object sender, EventArgs e)
{
DataTable dt = (DataTable)lvGuitars.DataSource;
DataView dv = new DataView(dt);
dv.Sort = "Make ASC";
lvGuitars.DataSource = dv.ToTable();
lvGuitars.DataBind();
}
Проблема в том, что сортируются все данные, с которыми был просмотрен список перед любой фильтрацией, а не последние отфильтрованные данные.Как я могу изменить этот код, чтобы последние данные, доступные в списке, были отсортированы?
Спасибо