代码之家  ›  专栏  ›  技术社区  ›  Sauron

从ASP.NET中的GridView获取当前行

  •  2
  • Sauron  · 技术社区  · 15 年前

    我有一个带有“删除”和“编辑”按钮的网格视图

    <asp:GridView ID="grdTrackedItems" runat="server" AutoGenerateColumns="False" Width="330px"
                BorderStyle="None" OnRowDataBound="OnRowDataBoundTrackedItems" OnRowDeleting="OnRowDeletingTrackedItems">
                <Columns>
                  <asp:TemplateField HeaderText="Name">
                    <ItemTemplate>
                      <asp:Label ID="lblItem" runat="server" Text='<%# Eval("Item") %>' />
                    </ItemTemplate>
                  </asp:TemplateField>
                  <asp:TemplateField>
                    <ItemTemplate>
                      <asp:ImageButton ID="imgDelete" runat="server" ImageUrl="~/Resources/Images/Delete.png"
                        Height="12" Width="12" ToolTip="Delete" CommandName="Delete" />
                    </ItemTemplate>
                    <ItemStyle Width="22px" />
                  </asp:TemplateField>
                  <asp:TemplateField>
                    <ItemTemplate>
                      <asp:ImageButton ID="imgEdit" runat="server" ImageUrl="~/Resources/Images/Edit.png"
                        Height="12" Width="12" ToolTip="Edit" />
                    </ItemTemplate>
                    <ItemStyle Width="22px" />
                  </asp:TemplateField>
                </Columns>
              </asp:GridView>
    

    我在页面底部有一个文本框和“保存”按钮。当我从GridView单击编辑按钮时,我想在文本框中显示项目名称。我该怎么做?

    3 回复  |  直到 15 年前
        1
  •  3
  •   womp    15 年前

    提供行编辑事件的处理程序,然后更新该处理程序中的文本框。

    <asp:GridView ID="grdTrackedItems" runat="server" 
                 AutoGenerateColumns="False" Width="330px"
                ...
                 OnRowEditing="EditRecord">
                <Columns>
    
    
    protected void EditRecord(object sender, GridViewEditEventArgs e)
    {
        Label lbl = (Label)grdTrackedItems.Rows[e.NewEditIndex].Cells[0].FindControl("lblItem");
    
    
        MyTextBox.Text = lbl.text;
    }
    
        2
  •  3
  •   Sauron    15 年前

    在“编辑”按钮单击处理程序中,您可以按如下方式访问当前行:

    protected void Button1_Click1(object sender, EventArgs e)
    {
        GridViewRow row = ((ImageButton)sender).Parent.Parent as GridViewRow;
        // Do some thing with this row
    }
    
        3
  •  2
  •   Community Dunja Lalic    7 年前

    我是从 river-blue's 回答。

    将datakeynames=“item”添加到GridView 在编辑按钮中单击处理程序

         protected void OnClickEdit( object sender, EventArgs e )
        {
            GridViewRow row = ( (ImageButton) sender ).Parent.Parent as GridViewRow;
            txtName.Text =  grdTrackedItems.DataKeys[row.RowIndex].Value.ToString();
        }