2009-07-05 100 views
0

我期望能夠點擊一個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

回答

7

感謝您的幫助已經找到了答案,另一種方式......而不是使用visibility屬性 我設置的顯示屬性設置爲無,一切按原樣工作...

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


.HiddenColumn{display:none;} 
0

Adrian Godong的評論是正確的。解決這個問題的最簡單方法是將GridView設置爲仍然生成Select LinkBut​​ton,但將其Visible屬性設置爲false。最後,設置onclick事件在Select LinkBut​​ton上觸發虛擬點擊。這樣,ASP.NET事件將直接來自Select按鈕,因此您不會被捕獲爲無效的回發安全檢查。