Gridview 中,自定义了几个按钮,比如:<asp:linkbutton id="btn1" CommandArgument='<%# Eval("ID")%>'></asp:linkbutton>
<asp:button id="btn2" CommandArgument='<%# Eval("ID")%>'></asp:button>
<asp:imagebutton id="btn3" CommandArgument='<%# Eval("ID")%>'></asp:imagebutton>他们的CommandArgument属性绑定的都是数据库的ID字段。然后我点击之后,在command事件里面,通过e.CommandArgument得到字段值。问题:给每个按钮都加上这属性挺麻烦的,有没有更好一些的办法,不需要给每个按钮都加属性,并且可以在command事件中得到点击的改行的ID值?谢谢。!

解决方案 »

  1.   

    你现在的做法没问题,你不保存在 CommandArgument 中,也要存在同行的其它控件中反倒是没有现在的便捷
      

  2.   

    又或者 根据 NamingContainer 来获取 相应的 GridRowView 然后获取索引 在从 DataKeys 里获得也很麻烦
      

  3.   

    谢谢非哥。那看来是我过分懒了。。好吧。那我就不变了。还用现在的写法了。CSDN说我结贴太快。。稍等就结贴!
      

  4.   

    结贴太快了!
    可以通过e.CommandSource来获得id
      

  5.   

    e.CommandSource获取的是控件的ID,获取不到你绑定列的
      

  6.   

    无所为感谢!玩玩而已!
    限定在RowCommand事件中,做了一下:(其实直接在LinkButton中也可以)
    例如linkbutton,commandName是se,可这样获得id
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.ToString() == "se")
            {
                LinkButton myL = (LinkButton)e.CommandSource;
                int Index = ((GridViewRow)(myL.NamingContainer)).RowIndex;//获得行号
                string id = GridView1.DataKeys[Index].Value.ToString();//获得id
            }
        }
      

  7.   


    获取的是控件的ID,获取不到你绑定列的=>能获取的是控件的ID,获取不到你绑定列的