web-dev-qa-db-ja.com

ASP.NETグリッドビュー行onclick

データがgridview Webコントロールにバインドされたら、onclickイベントを行に追加しようとしています。以下のコードは属性を追加しておらず(ページが作成された後でビューソースをチェックしました)、もちろん機能は追加されていません。現在、ページにオンクリック印刷しているだけですが、最終的には別のページにリンクします。何が悪いのかについてのアイデアはありますか?

また、stackoverflowコミュニティ全体に感謝します。このコミュニティは常に大きな助けとなってきました。今週末、自分でいくつかの投稿を読み、質問に答えるようにして、少しだけお返しします。

C#サーバー側

protected void dataTbl_RowDataBound(GridViewRowEventArgs e){
            e.Row.Attributes.Add("id",e.Row.Cells[0].Text);
            e.Row.Attributes.Add("onclick", "rowClick('"+e.Row.RowIndex+"')");

        }

JavaScriptクライアント側

function rowClicked(counter){
    document.write(counter);
}
9
steventnorris

GridViewのRowDataBoundでこれを使用して、行を選択する属性を追加します。

protected void grvSearch_RowDataBound(object sender, GridViewRowEventArgs e)
{
    try
    {
        switch (e.Row.RowType)
        {
            case DataControlRowType.Header:
                //...
                break;
            case DataControlRowType.DataRow:
                e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#93A3B0'; this.style.color='White'; this.style.cursor='pointer'");
                if (e.Row.RowState == DataControlRowState.Alternate)
                {
                    e.Row.Attributes.Add("onmouseout", String.Format("this.style.color='Black';this.style.backgroundColor='{0}';", grvSearch.AlternatingRowStyle.BackColor.ToKnownColor()));
                }
                else
                {
                    e.Row.Attributes.Add("onmouseout", String.Format("this.style.color='Black';this.style.backgroundColor='{0}';", grvSearch.RowStyle.BackColor.ToKnownColor()));
                }
                e.Row.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(grvSearch, "Select$" + e.Row.RowIndex.ToString()));
                break;
        }
    }
    catch 
    {
        //...throw
    }
}

そして、これはユーザーが行をクリックしたときにイベントをキャッチするためです:

protected void grvSearch_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {
        //Do wherever you want with grvSearch.SelectedIndex                
    }
    catch
    {
        //...throw
    }
}
10
Lukinha RS

JQueryでこれを行うには、次のような行クリックイベントを取得します。

$(document).ready(function () {
    var clickCnt = 0;
    $('table tr').click(function(){
        clickCnt++;
        //Do something 
    });
});

そのため、TR [〜#〜] id [〜#〜]を、行に表示されるオブジェクトの主キーに設定することをお勧めします。

3
anAgent

GriddataTbl_RowDataBoundイベントを呼び出すように設定されていますか?そのイベントでブレークポイントを使用してデバッグする場合、そのイベントは発生しますか?

3
Leon

動作していない場合は、rowcommandイベントを使用できます。 http://msdn.Microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx

2
Kadir