不能在ASP中选择另一行.. NET GridView(第一个选择工作),因为__doPostBack脚本丢失
本文关键字:选择 工作 因为 doPostBack 脚本 第一个 一行 ASP NET 不能 GridView | 更新日期: 2023-09-27 18:02:16
我在ASP中有一个GridView的问题。NET web表单应用程序。基本上发生的事情是,我有代码通过单击来选择一行,这只在第一次单击时起作用。当单击其他行时,什么也没有发生,并且在浏览器控制台中我得到__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
脚本。
我想我不会知道为什么__doPostBack
在改变行选择后没有被定义的原因,但现在的解决办法是"强制"以标准方式生成这个函数(很多人有各种潜在的原因这样做):
protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.GetPostBackEventReference(gvUsers, "");
//other logic
}
似乎某些罕见的情况会触发ASP中奇怪的bug。关于__doPostBack
函数的。NET框架。