asp.net의 gridview에서 현재 행을 가져옵니다
문제
삭제 및 편집 버튼이있는 그리드 뷰가 있습니다.
<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에서 편집 버튼을 클릭하면 텍스트 상자에 항목 이름을 표시하고 싶습니다. 어떻게 할 수 있습니까?
해결책
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;
}
다른 팁
편집 버튼 내부 클릭 핸들러는 다음과 같이 현재 행에 액세스 할 수 있습니다.
protected void Button1_Click1(object sender, EventArgs e)
{
GridViewRow row = ((ImageButton)sender).Parent.Parent as GridViewRow;
// Do some thing with this row
}
나는 해결책을 얻었다 강 블루의 대답.
datakeyynames = "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();
}
제휴하지 않습니다 StackOverflow