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方法为注册回发或回调数据进行验证。

任何人都知道如何克服这一点?

谢谢,

+0

的问题通常是当你使用Javascript修改控制状态。 ASP.NET具有内置的安全功能,可以散列控件返回的所有可能值(以防某些恶意用户修改HTTP请求以注入不希望的值)。 就你而言,它看起来像第三行导致了这个问题。我不知道这个解决方案(因此只有一个评论,而不是答案)。 – 2009-07-05 22:41:49

感谢您的帮助已经找到了答案,另一种方式......而不是使用visibility属性 我设置的显示属性设置为无,一切按原样工作...

<asp:CommandField ShowSelectButton="True" ItemStyle-CssClass="HiddenColumn" HeaderStyle-CssClass="HiddenColumn"/> 


.HiddenColumn{display:none;} 

Adrian Godong的评论是正确的。解决这个问题的最简单方法是将GridView设置为仍然生成Select LinkBut​​ton,但将其Visible属性设置为false。最后,设置onclick事件在Select LinkBut​​ton上触发虚拟点击。这样,ASP.NET事件将直接来自Select按钮,因此您不会被捕获为无效的回发安全检查。

你也可以使用“ RegisterForEventValidation”。

检查: RegisterForEventValidation .net 3.5 gridview row, how to?