ASP.NET gridview行onclick

时间:2012-02-27 17:04:30

标签: c# javascript asp.net gridview onclick

我试图在数据绑定到gridview webcontrol后将onclick事件添加到行中。下面的代码不添加任何属性(在创建页面后检查viewsource),当然,没有添加任何功能。现在,我刚刚对页面进行了onclick打印,但最终它将链接到另一个页面。关于什么是错的任何想法?

另外,感谢stackoverflow社区。这个社区一直都是一个很好的帮助。计划在本周末自己查看一些帖子,然后开始回答问题,我可以回复一下。

C#server-side

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);
}

4 个答案:

答案 0 :(得分:10)

我在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
    }
}

这是为了在用户点击行时捕获de事件:

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

答案 1 :(得分:3)

要在jQuery中执行此操作,只需获取如下所示的行单击事件:

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

有了这个,我建议将TR ID 设置为行中显示的对象的主键。

答案 2 :(得分:3)

Grid是否设置为调用dataTbl_RowDataBound事件?如果在该事件中使用断点进行调试,该事件是否会被触发?

答案 3 :(得分:2)

如果它不起作用,您可以使用rowcommand事件。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx