C# 排序网格视图
我有一个gridview,在这里我绑定了一个数据源,我必须为这个gridview添加排序;我添加了下面的代码,但效果不好C# 排序网格视图,c#,asp.net,.net,sorting,gridview,C#,Asp.net,.net,Sorting,Gridview,我有一个gridview,在这里我绑定了一个数据源,我必须为这个gridview添加排序;我添加了下面的代码,但效果不好 private string ConvertSortDirectionToSql(SortDirection sortDireciton) { string m_SortDirection = String.Empty; switch (sortDireciton) { case SortDirection.Ascending:
private string ConvertSortDirectionToSql(SortDirection sortDireciton)
{
string m_SortDirection = String.Empty;
switch (sortDireciton)
{
case SortDirection.Ascending:
m_SortDirection = "ASC";
break;
case SortDirection.Descending:
m_SortDirection = "DESC";
break;
}
return m_SortDirection;
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable m_DataTable = GridView1.DataSource as DataTable;
if (m_DataTable != null)
{
DataView m_DataView = new DataView(m_DataTable);
m_DataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
GridView1.DataSource = m_DataView;
GridView1.DataBind();
}
}
如果你的排序方向总是上升的,也许会有帮助。你可以用这个,因为我有同样的问题,我这样解决了它
public string SortingExpression
{
get
{
if (this.ViewState["SortExpression"] == null)
return "";
else
return (string)this.ViewState["SortExpression"];
}
set
{
this.ViewState["SortExpression"] = value;
}
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable m_DataTable = GridView1.DataSource as DataTable;
if (m_DataTable != null)
{
DataView m_DataView = new DataView(m_DataTable);
SortingExpression = e.SortExpression + " " + (SortingExpression.Contains("ASC") ? "DESC" : "ASC");
m_DataView.Sort =SortingExpression;
GridView1.DataSource = m_DataView;
GridView1.DataBind();
}
}
试试这个。这种方法对我有效 dt是包含这些值的数据表。
protected void onSorting_Gridview1(object sender, GridViewSortEventArgs e)
{
string _sortDirection = dir.ToString();
if(_sortDirection.Equals("Ascending"))
{
_sortDirection = "ASC";
dir = SortDirection.Descending;
}
else
{
_sortDirection="DESC";
dir = SortDirection.Ascending;
}
if (dt != null)
{
//Sort the data.
dt.DefaultView.Sort = e.SortExpression + " " + _sortDirection;
gridView1.DataSource = dt;
gridView1.DataBind();
}
}
public SortDirection dir
{
get
{
if (ViewState["DIR"] == null)
{
ViewState["DIR"] = SortDirection.Ascending;
}
return (SortDirection)ViewState["DIR"];
}
set
{
ViewState["DIR"] = value;
}
}
你有什么问题?你怎么能说它工作不好?很抱歉,它没有任何错误,但它不工作。它的可能副本不工作,但当我在GridView1_排序上做断点时。我在表中有空数据。当我散列if(m_DataTable!=null)时,这个错误apear(DataTable必须在使用DataView之前设置)