读书人

关于onsorting的有关问题:小弟我点标

发布时间: 2012-01-29 21:39:32 作者: rapoo

关于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 "]

读书人网 >asp.net

热点推荐