2009-07-05 22 views
0

selectリンクを使用するのではなく、行を選択するためにgridview行をクリックできるようにしています。asp.net gridview - select row

私は行がクリック可能にする、それ以下のコードを持っており、ハイパーリンクのように振る舞う.....

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 

....しかし、私はエラーメッセージを取得:

無効なポストバックをかコールバック引数。イベントの検証は、in構成または<%@ Page EnableEventValidation = "true"%>を使用して有効になっています。セキュリティ上の理由から、この機能はポストバックまたはコールバックイベントの引数が元々レンダリングされたサーバーコントロールから発生することを確認します。データが有効で予期されている場合は、検証のためにポストバックまたはコールバックデータを登録するためにClientScriptManager.RegisterForEventValidationメソッドを使用します。

誰もがこれを克服する方法を知っていますか?

ありがとう、

+0

問題は、通常は付属しています。 ASP.NETには、コントロールによって返される可能性のあるすべての値をハッシュするセキュリティ機能が組み込まれています(悪意のあるユーザーが意図しない値を挿入するようにHTTPリクエストを変更した場合)。 3番目の行で問題が発生しているようです。私はこれのための解決策を知りません(したがって、コメントのみ、答えではありません)。 –

答えて

7

おかげで、答えに別の方法を発見した...私はnoneに表示プロパティを設定した表示プロパティ を使用し、すべてがそのまま働いていたのではなく...

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


.HiddenColumn{display:none;} 
0

Adrian Godongのコメントは正しいです。これを修正する最も簡単な方法は、Select LinkBut​​tonを生成するようにGridViewを設定するが、Visibleプロパティをfalseに設定することです。最後に、onclickイベントを設定してSelect LinkBut​​tonの仮想クリックを発生させます。このようにして、ASP.NETイベントはSelectボタンから直接入力されるため、無効なポストバックセキュリティチェックが検出されることはありません。助けのための