我正在创建View
并将其分配给ListView的ListView
属性。 ItemsSource
的{{1}}绑定到ObservableCollection<Entry>
。 Entry
是我的MVVM应用程序中的模型,它包含List<KeyValuePair<string,string>>
。它还有一个索引器,它从索引器参数中获取第一个KeyValurPair<string,string>
的{{1}}属性(从列表中)。所以它就像一本字典。
现在我正在制作GridView。
Value
foreach (Column column in category.Columns.Where(c => c.IsVisibleInTable)) {
var gridViewColumn = new GridViewColumn {
Header = column.Name,
DisplayMemberBinding = new Binding($"[{column.Name}].Value")
};
gridView.Columns.Add(gridViewColumn);
}
也是一个模型,但这并不重要。
现在我想告诉GridView根据第一列进行排序。但我无法使用Column
的DefaultView并向其添加ItemsSource
因为SortDescription
需要一个属性名称,而我没有绑定到属性名称而是绑定到索引器。
那么如何根据第二列进行排序呢?
答案 0 :(得分:0)
这里是排序算法
iN gridview传递这两个参数aspx
AllowSorting="true"
OnSorting="OnSorting"
private string SortDirection
{
get { return ViewState["SortDirection"] != null ? ViewState["SortDirection"].ToString() : "ASC"; }
set { ViewState["SortDirection"] = value; }
}
protected void OnSorting(object sender, GridViewSortEventArgs e)
{
this.BindGrid(e.SortExpression);
}
在这里我们必须放置代码 `private void BindGrid(字符串sortExpression = null) { conn.Open();
SqlCommand cmd = new SqlCommand("SELECT * from [test].[dbo].[myform] order by name", conn);
SqlDataAdapter sda = new SqlDataAdapter();
cmd.Connection = conn;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
if (sortExpression != null)
{
DataView dv = dt.AsDataView();
this.SortDirection = this.SortDirection == "ASC" ? "DESC" : "ASC";
dv.Sort = sortExpression + " " + this.SortDirection;
GridView2.DataSource = dv;
}
else
{
GridView2.DataSource = dt;
}
GridView2.DataBind();
conn.Close();
}
}`