繁体   English   中英

如果用户单击两次,则Datagrid上的ASP.NET无效Viewstate排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM