大家好!我在GridView中使用了ItemTemplate,ItemTemplate里面是一个Table.我在Table里面放了一个LinkButton,作用是删除,现在我想实现的是点击每一行相对应的LinkButton就实现将对应的行删除,但我在后台代码中无法获得作为标识的"gg_ID",请大家指点下应该怎么做才能使我在后台代码中获得页面上点击了LinkButton按钮对应行的一个字段的值.(我不希望用本身的 AutoGenerateDeleteButton 属性,因为排版太难看了)
ps:我的GRIDVIEW是利用后台代码绑定的,不是直接绑定的.另外,网上说的用SelectedDataKey.Value.ToString行不通(HTML代码中的GridView属性我已经定义了DataKeyNames),这是为什么呢?
下面是我根据网友们的提示作的尝试:
<HTML>代码:<asp:GridView ID="GridView1" AutoGenerateColumns="False"  DataKeyNames="gg_id"   OnSelectedIndexChanging="GridView_SelectedIndexChanging"  runat="server"   >.CS代码:
static String gg_id;
protected void GridView_SelectedIndexChanging(object sender, EventArgs e)
    {
        gg_id = GridView1.SelectedDataKey.Value.ToString();
    }
}

解决方案 »

  1.   


    protected void GridView_SelectedIndexChanging(object sender, EventArgs e) 
        { 
            gg_id = GridView.DataKeys[gr.DataItemIndex].Value.ToString().Trim();
        } 
          
      

  2.   

    用e点出来取出该行标记我用03,没用过GridView
    参考03是用DataGrid1.DataKeys[ e.Item.ItemIndex].ToString();
      

  3.   

    protected void GridView_SelectedIndexChanging(object sender, EventArgs e) 
        { 
            gg_id = GridView.DataKeys[gr.DataItemIndex].Value.ToString().Trim(); 
        } 
      

  4.   

    那你就给你的LinkButton这个按钮上绑定一个主键,就比如你绑定你这张表的ID
    <asp:LinkButton ID="LinkButton1" CommandArgument='<%#Eval("ID") %>' runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton></div>然后在你的LinkButton事件中  获取这个ID
    string ID = ((LinkButton)sender).CommandArgument.ToString();然后你在根据这个ID 来删除就ok了
      

  5.   

    CommandArgument='<%#Eval("ID") %>'
    取值用e.CommandArgument
      

  6.   

    “System.Web.UI.WebControls.GridView”并不包含“DataItemIndex”的定义? 为什么会这样的呢?还需要其它的定义吗?请大侠指点一下
      

  7.   

    “System.Web.UI.WebControls.GridView”并不包含“DataItemIndex”的定义? 为什么会这样的呢?还需要其它的定义吗?请大侠指点一下
      

  8.   

    //protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        //{
        //    if (e.CommandName == "MyCommand")
        //    {
        //        Button button = (Button)e.CommandSource;
        //        GridViewRow row = (GridViewRow)button.Parent.Parent;
        //        string a = row.Cells[1].Text.ToString();//获得第一个单元格的值   
        //        string b = this.GridView1.DataKeys[row.DataItemIndex].Values[0];//获得DataKeys的值   
        //    }
        //}  
    ------------
    <ItemTemplate>
                            <asp:LinkButton ID="lbtnEdit" runat="server" CommandName="MyCommand" CausesValidation="False">编辑</asp:LinkButton>
                        </ItemTemplate>-------------
    另外一种常用方法
    HTML Code
    <asp:TemplateField HeaderText="删除">
                            <ItemTemplate>
                                <asp:LinkButton ID="lbtnDel" runat="server" CommandName="Delete" OnClientClick="return confirm('确认要删除吗?');" CausesValidation="False">删除</asp:LinkButton>
                            </ItemTemplate>
                    <ItemStyle HorizontalAlign="Center" />
                        <HeaderStyle HorizontalAlign="Center" />
                        <FooterStyle HorizontalAlign="Center" />
                    </asp:TemplateField>
    调用Gridview的事件-----CommandName="Delete" 
    C# Code
    protected void gvUser_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
    empId = gvUser.DataKeys[e.RowIndex].Values["empId"].ToString().Trim();
    //删除方法
    }