J'ai une GridView asp.net:
<asp:TemplateField HeaderText="View Faktor" ShowHeader="False" Visible="True">
<ItemTemplate>
<asp:ImageButton ID="imgBtn1" CssClass="SelectRow" runat="server" CausesValidation="false"
CommandArgument='<%#(eval("mprID")) %>' CommandName="ViewFactors" ImageUrl="~/tadarokat/Images/factor.png"
Text="" />
</ItemTemplate>
</asp:TemplateField>
Comment puis-je obtenir rowIndex
sur l'événement de commande de ligne?
Je veux mettre en évidence (select
) la ligne cible lorsque RowCommand
se déclenche.
c'est la réponse à votre question.
GridViewRow gvr = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
int RowIndex = gvr.RowIndex;
ImageButton\Button etc.
CommandArgument='<%# Container.DataItemIndex%>'
code-behind
protected void gvProductsList_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = e.CommandArgument;
}
Si vous avez une commande intégrée de GridView comme insérer, mettre à jour ou supprimer, sur la commande de ligne, vous pouvez utiliser le code suivant pour obtenir l'index:
int index = Convert.ToInt32(e.CommandArgument);
Dans une commande personnalisée, vous pouvez définir l'argument de la commande sur yourRow.RowIndex.ToString()
, puis le récupérer dans le gestionnaire d'événements RowCommand. À moins, bien sûr, que vous ayez besoin de l'argument de commande dans un autre but.
Ou, vous pouvez utiliser une classe control
au lieu de leurs types:
GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);
int RowIndex = row.RowIndex;
J'ai pu utiliser --- rahularyansharma's réponse ci-dessus dans mon propre projet, avec une modification mineure. J'avais besoin d'obtenir la valeur de cellules particulières sur la ligne sur laquelle l'utilisateur clique sur LinkButton
. La deuxième ligne peut être modifiée pour obtenir la valeur d'autant de cellules que vous le souhaitez.
Voici ma solution:
GridViewRow gvr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
string typecore = gvr.Cells[3].Text.ToString().Trim();
protected void gvProductsList_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
if (e.CommandName == "Delete")
{
GridViewRow gvr = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
int RemoveAt = gvr.RowIndex;
DataTable dt = new DataTable();
dt = (DataTable)ViewState["Products"];
dt.Rows.RemoveAt(RemoveAt);
dt.AcceptChanges();
ViewState["Products"] = dt;
}
}
catch (Exception ex)
{
throw;
}
}
protected void gvProductsList_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
try
{
gvProductsList.DataSource = ViewState["Products"];
gvProductsList.DataBind();
}
catch (Exception ex)
{
}
}