[英]ASP.NET Invalid Viewstate on Datagrid Sort if user clicks twice
我在使用asp:Datagrid的旧代码上遇到问题。 此Datagrid启用了排序列,如果用户单击得太快,则在页面完成从排序中重新加载之前,将引发无效的viewstate错误。 我尝试在控件上禁用viewstate,然后在每次页面加载时重新绑定它,但无济于事。 有人知道我该如何解决吗?
我尚未测试过,但是您是否尝试过在排序事件处理程序中先禁用排序功能,然后在数据绑定之后启用它?
<asp:DataGrid id="MyDataGrid" OnSortCommand="SortMyData" AllowSorting="True" runat="server">
void SortMyData(Object sender, DataGridSortCommandEventArgs e)
{
MyDataGrid.AllowSorting = false;
DataView myDataView = [however you're retrieving the data];
myDataView.Sort = e.SortExpression;
MyDataGrid.DataSource = myDataView;
MyDataGrid.DataBind();
MyDataGrid.AllowSorting = true;
}
或者(可能更好)为列表完成排序时实现一个事件,如下所示: 如果如何对DataGrid列进行排序(而不是排序) ,然后如何将其重新打开, 如何通知我 。
因此,一旦单击链接,我最终不得不禁用链接客户端。 我使用jquery捕获了DataGrid中的所有链接标记(因为标题中只有我在其中的链接标记),并为它们提供了一个click事件,一旦单击该事件,就会为所有链接标记提供另一个阻止该单击的click事件。
白衣:
$(document).ready(function() {
$("#<%=myDataGrid.ClientID%> a").on("click", function() {
$("#<%=myDataGrid.ClientID a").on("click", function(e) {
e.preventDefault();
});
});
});
这样,只有首次点击触发,其他所有点击都会被阻止,直到页面从发帖刷新为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.