关于onsorting的问题:我点标题后页面只是刷新一下,并没有排序啊,怎么回事啊?20分
aspx里:
<form id= "form1 " runat= "server ">
<asp:GridView AllowSorting= "True " AllowPaging= "true " pagesize= "12 " AutoGenerateColumns= "False " OnPageIndexChanging= "gvchange " id= "gv " OnSorting= "gvsort " runat= "server ">
<Columns>
<asp:BoundField DataField= "biaoti " HeaderText= "标题 " ReadOnly= "True " SortExpression= "biaoti "/>
<asp:BoundField DataField= "shijian " HeaderText= "时间 " SortExpression= "shijian "/>
</Columns>
</asp:GridView>
</form>
cs里:
protected void gvsort(object sender, GridViewSortEventArgs e)
{
ViewState[ "sortexpression "] = e.SortExpression;
if (ViewState[ "sortdirection "] == null)
{
ViewState[ "sortdirection "] = "asc ";
}
else
{
if (ViewState[ "sortdirection "].ToString() == "asc ")
{
ViewState[ "sortdirection "] = "desc ";
}
else
{
ViewState[ "sortdirection "] = "asc ";
}
}
bindgv();
}
无论我点标题字段还是时间字段都不排序,只是刷新了下页面,请问怎么回事啊?
[解决办法]
前台页面加:AllowSorting= "True " OnSortCommand= "dg_CorpInfo_SortCommand "
后台:
protected void dg_CorpInfo_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
if (ViewState[ "SortExpression "] != null)
{
if (ViewState[ "SortExpression "].ToString() == e.SortExpression.ToString())
{
string cSortExpression = " ";
if (ViewState[ "SortExpression "].ToString().Length > 5)
{
cSortExpression = ViewState[ "SortExpression "].ToString().Substring(ViewState[ "SortExpression "].ToString().Length - 5 - 1 , 5);
}
if (cSortExpression == " DESC ")
{
ViewState[ "SortExpression "] = e.SortExpression;
}
else
{
ViewState[ "SortExpression "] = e.SortExpression + " DESC ";
}
}
else
{
ViewState[ "SortExpression "] = e.SortExpression;
}
}
else
{
ViewState[ "SortExpression "] = e.SortExpression;
}
BindData_dg_CorpInfo();
}
[解决办法]
你重新绑定后,数据重新查询select * FROM aa,自然是按默认的排序
你可以在sql语句里并上那些排序的viewstate,
"select * FROM aa order by " + ViewState[ "SortExpression "]