【问题标题】:how to get grid view selected row's DataBase id如何获取网格视图选定行的数据库ID
【发布时间】:2012-02-09 06:21:02
【问题描述】:

我有 GridView,它不会自动生成列。在 GridView 中有 3 列:一列用于复选框(从 DataTable 中删除选定的行), 一个用于编辑链接按钮(编辑当前行), 第三个用于显示来自 DataTable 的数据。

我从 DataTable 绑定它。 我在 DataTable 中有一个主键。 现在我的问题是当我单击编辑链接按钮时,我没有从中获取主键(id) 网格视图中选定行的数据表(我认为单击编辑链接按钮时未选择行)。由于 GridView 中绑定的数据被过滤,我无法将行索引与数据表主键匹配。

我尝试过的是,我在网格视图中创建了一个隐藏列,它是 DataTable 中的主键列。但为此,我也没有在单击进行编辑的行的隐藏列中获取数据。

请有人帮忙提出一个新想法,或解决我正在尝试的问题.. 提前谢谢。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    请尝试如下.. 更新,选择的 ID 可以在 gv_RowCommand 事件中获取。对于delection [multiple select checbox] check in btnDelete_Click, enter code here

    --------------aspx 代码------------------------------- -

    <asp:Button ID="btnDelete" runat="server" Text="Delete" 
            onclick="btnDelete_Click" />
        <asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="ID" onrowcommand="gv_RowCommand" 
            onrowupdating="gv_RowUpdating">
            <Columns>
                <asp:TemplateField HeaderText="Delete">
                    <ItemTemplate>
                        <asp:CheckBox ID="chkSel" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Update">
                    <ItemTemplate>
                        <asp:LinkButton runat="server" CommandArgument='<%# Eval("ID") %>' CommandName="Update" text="Update" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="NAME" HeaderText="Name" />
            </Columns>
        </asp:GridView>
    

    ---------------后面的代码---------------------------

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                    BindData();
            }
    
            private void BindData()
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("ID");
                dt.Columns.Add("NAME");
    
                DataRow dr = dt.NewRow();
                dr[0] = "1";
                dr[1] = "James";
                dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                dr[0] = "2";
                dr[1] = "Paul";
                dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                dr[0] = "3";
                dr[1] = "Mary";
                dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                dr[0] = "4";
                dr[1] = "Susan";
                dt.Rows.Add(dr);
    
                gv.DataSource = dt;
                gv.DataBind();
            }
    
            protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                if (e.CommandName == "Update")
                {
                    string id = e.CommandArgument.ToString();
                }
            }
    
            protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
            {
    
            }
    
            protected void btnDelete_Click(object sender, EventArgs e)
            {
                string idList = "";
    
                for (int i = 0; i < gv.Rows.Count; i++)
                {
                    CheckBox chk = (CheckBox)gv.Rows[i].FindControl("chkSel");
    
                    if (chk != null && chk.Checked)
                        idList += gv.DataKeys[i].Value.ToString() + ",";
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 2021-03-27
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 1970-01-01
      相关资源
      最近更新 更多