C# Can';无法在ASP.NET GridView中选择另一行(第一个选择有效),因为缺少u doPostBack脚本
我在ASP.NET web窗体应用程序中遇到GridView问题。基本上,我已经准备好了代码,可以通过单击来选择一行,这只在第一次单击时起作用。单击其他行时,不会发生任何事情,并且在浏览器控制台中,我得到C# Can';无法在ASP.NET GridView中选择另一行(第一个选择有效),因为缺少u doPostBack脚本,c#,asp.net,gridview,webforms,C#,Asp.net,Gridview,Webforms,我在ASP.NET web窗体应用程序中遇到GridView问题。基本上,我已经准备好了代码,可以通过单击来选择一行,这只在第一次单击时起作用。单击其他行时,不会发生任何事情,并且在浏览器控制台中,我得到\u doPostBack是未定义的错误 允许行选择的代码主要基于处理OnRowDataBound事件,在我的例子中如下所示: protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e) { if
\u doPostBack是未定义的
错误
允许行选择的代码主要基于处理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时,实际上
\uuu doPostBack
脚本以及它使用的两个隐藏的输入
。我想我不知道在任何时候更改行选择后没有定义\uu doPostBack
的原因,但目前的解决办法是以标准方式“强制”生成此函数(许多人有各种潜在的原因这样做):
似乎某些罕见的情况会在ASP.NET框架中触发有关
\u doPostBack
函数的奇怪错误。您的脚本管理器定义是什么样子的?另外,您的web.config中的UnobstrusiveValidationMode
设置为什么?@JimMSDN我没有明确定义的ScriptManager
,我的web.config中也没有UnobstrusiveValidationMode
。我在想,如果定义/设置了其中一个,可能会产生一些意外的行为(我自己也在追踪类似的东西…)一个有趣的测试可能是添加一个ScriptManager,看看观察到的行为是否发生了变化。
protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.GetPostBackEventReference(gvUsers, "");
//other logic
}