我正在尝试在 UpdatePanel 内实现带有分页的 GridView。 当我第一次点击时,一切都很好。 分页开始并快速加载下一组数据。 但是,当我尝试单击另一页数据的链接时,出现以下错误:
Sys.WebForms.PageRequestManagerServerErrorException:在服务器上处理请求时发生未知错误。 服务器返回的状态码为:12030
aspx代码
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<contenttemplate>
<asp:GridView ID="GridView1" runat="server" CellPadding="2"
AllowPaging="true" AllowSorting="true" PageSize="20"
OnPageIndexChanging="GridView1_PageIndexChanging"
OnSorting="GridView1_PageSorting"
AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="ActivityLogID" HeaderText="Activity Log ID" SortExpression="ActivityLogID" />
<asp:BoundField DataField="ActivityDate" HeaderText="Activity Date" SortExpression="ActivityDate" />
<asp:BoundField DataField="ntUserID" HeaderText="NTUserID" SortExpression="ntUserID" />
<asp:BoundField DataField="ActivityStatus" HeaderText="Activity Status" SortExpression="ActivityStatus" />
</Columns>
</asp:GridView>
</contenttemplate>
</asp:UpdatePanel>
代码隐藏
private void bindGridView(string sortExp, string sortDir)
{
SqlCommand mySqlCommand = new SqlCommand(sSQL, mySQLconnection);
SqlDataAdapter mySqlAdapter = new SqlDataAdapter(mySqlCommand);
mySqlAdapter.Fill(dtDataTable);
DataView myDataView = new DataView();
myDataView = dt.DefaultView;
if (sortExp != string.Empty)
{
myDataView.Sort = string.Format("{0} {1}", sortExp, sortDir);
}
GridView1.DataSource = myDataView;
GridView1.DataBind();
if (mySQLconnection.State == ConnectionState.Open)
{
mySQLconnection.Close();
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
bindGridView();
}
protected void GridView1_PageSorting(object sender, GridViewSortEventArgs e)
{
bindGridView(e.SortExpression, sortOrder);
}
有关第二次单击时导致错误的原因的任何线索吗?
如果您的页面上有任何位于 UpdatePanel 之外的内容,在第一次单击后正在更改,或者尝试更改,则第二次单击时情况会有所不同,但您的调用确实再次获得了第一个值,因为有 UpdatePanel 之外的内容并且没有获得更新值,只需再次获取第一个 -> 因此在第二次单击时会产生错误。
您可能在 UpdatePanel 之外有一些需要正确呈现的数据。 将您更改并与此控件一起使用的任何内容保留在 UpdatePanel 中。
例如sSQL,您将其存储在哪里?它的变化?也许点击后其他值会发生变化?
您可能在 UpdatePanel 之外有一些需要正确呈现的数据。将您更改并与此控件一起使用的任何内容保留在 UpdatePanel 中。