Obtenez ligne actuelle de GridView dans ASP.NET
Question
J'ai un Gridview avec des boutons de suppression et de modifier ressemble
<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>
J'ai une zone de texte et le bouton Enregistrer en bas de la page. Je veux afficher le nom de l'élément dans la zone de texte lorsque je clique sur le bouton d'édition de gridview. Comment puis-je faire?
La solution
Fournir un gestionnaire pour l'événement RowEditing, puis mettez à jour votre zone de texte dans ce gestionnaire.
<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;
}
Autres conseils
dans le gestionnaire bouton d'édition de clic, vous pouvez accéder à la ligne en cours comme suit:
protected void Button1_Click1(object sender, EventArgs e)
{
GridViewRow row = ((ImageButton)sender).Parent.Parent as GridViewRow;
// Do some thing with this row
}
Je suis la solution de rivière bleues réponse.
Ajouter DataKeyNames = "Item" à Gridview et à l'intérieur du bouton modifier gestionnaire de clic
protected void OnClickEdit( object sender, EventArgs e )
{
GridViewRow row = ( (ImageButton) sender ).Parent.Parent as GridViewRow;
txtName.Text = grdTrackedItems.DataKeys[row.RowIndex].Value.ToString();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow