我在ASP.NET Web窗体应用程序中遇到GridView的问题。基本上会发生的事情是我有代码通过点击它来选择一行,这只是第一次点击。点击其他行时没有任何反应,在浏览器控制台中我收到__doPostBack is undefined
错误。
允许行选择的代码主要基于处理OnRowDataBound
事件,在我的情况下看起来像这样:
protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackEventReference(gvUsers, "Select$" + e.Row.RowIndex);
}
}
以下是我在选择更改事件处理程序中所做的事情:
protected void gvUsers_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
GridViewRow row = gvUsers.Rows[e.NewSelectedIndex];
row.CssClass = "selectedUser";
}
真的没什么特别的。这适用于很多人。但是当我在处理此事件后检查服务器返回的HTML时,确实缺少__doPostBack
脚本,以及它使用的两个隐藏的input
。
答案 0 :(得分:1)
我想我很快就知道在更改行选择之后未定义__doPostBack
的原因,但现在的解决方法是强制使用'强制'以标准方式生成此功能(许多人有各种潜在的原因来执行此操作):
protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.GetPostBackEventReference(gvUsers, "");
//other logic
}
似乎某些罕见情况会在ASP.NET框架中触发有关__doPostBack
函数的奇怪错误。