2010-01-12 56 views
2

我有一个GridView与删除和编辑按钮看起来像获取GridView的从当前行中ASP.NET

<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

提供的RowEditing事件的处理程序,然后更新在处理您的文本。

<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; 
} 
+0

它总是返回一个空字符串内???????? – Sauron 2010-01-15 03:44:07

+0

对不起,代码示例是通用的。您需要将其引用的单元格更改为您的实际单元格......看起来像是在第一列中,而不是第六列,并且您需要获取标签控件的值。我会更新代码。 – womp 2010-01-15 04:19:49

+0

我有疑问。由于我的网格只包含一个项目,我可以将它放在DataKeyNames中,是否有任何性能问题? – Sauron 2010-01-15 04:50:25

3

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

protected void Button1_Click1(object sender, EventArgs e) 
{ 
    GridViewRow row = ((ImageButton)sender).Parent.Parent as GridViewRow; 
    // Do some thing with this row 
} 
2

我从river-blue's得到了解决方案的答案。

添加的DataKeyNames =“项目”来的GridView 和编辑按钮单击处理

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