asp.net gridview - 选择行
问题描述:
我期望能够点击一个gridview行来选择一行而不是使用select链接。asp.net gridview - 选择行
我有下面这使得该行可以点击的,像一个超链接的代码.....
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
If (e.Row.RowType = DataControlRowType.DataRow) Then
e.Row.Attributes.Add("onmouseover", "this.style.cursor='hand';this.style.textDecoration='underline';")
e.Row.Attributes.Add("onmouseout", "this.style.textDecoration='none';")
e.Row.Attributes.Add("onclick", ClientScript.GetPostBackClientHyperlink(Me.GridView1, "Select$" + e.Row.RowIndex.ToString()))
End If
End Sub
....但后来我得到的错误信息:
无效的回发或回调参数。事件验证在配置中启用,或在页面中启用<%@ Page EnableEventValidation =“true”%>。为了安全起见,此功能验证回发或回调事件的参数来自最初呈现它们的服务器控件。如果数据有效且预期,请使用ClientScriptManager.RegisterForEventValidation方法为注册回发或回调数据进行验证。
任何人都知道如何克服这一点?
谢谢,
答
感谢您的帮助已经找到了答案,另一种方式......而不是使用visibility属性 我设置的显示属性设置为无,一切按原样工作...
<asp:CommandField ShowSelectButton="True" ItemStyle-CssClass="HiddenColumn" HeaderStyle-CssClass="HiddenColumn"/>
.HiddenColumn{display:none;}
答
Adrian Godong的评论是正确的。解决这个问题的最简单方法是将GridView设置为仍然生成Select LinkButton,但将其Visible属性设置为false。最后,设置onclick事件在Select LinkButton上触发虚拟点击。这样,ASP.NET事件将直接来自Select按钮,因此您不会被捕获为无效的回发安全检查。
答
你也可以使用“ RegisterForEventValidation”。
检查: RegisterForEventValidation .net 3.5 gridview row, how to?
的问题通常是当你使用Javascript修改控制状态。 ASP.NET具有内置的安全功能,可以散列控件返回的所有可能值(以防某些恶意用户修改HTTP请求以注入不希望的值)。 就你而言,它看起来像第三行导致了这个问题。我不知道这个解决方案(因此只有一个评论,而不是答案)。 – 2009-07-05 22:41:49