ASP GridView obtenir des valeurs de ligne cliquez sur le bouton

Ce que je fais de réinitialisation de mot de passe d'utilisateur sur imagebutton cliquez sur.

Fait jusqu'à présent ajoutée GridViewCommandEventHandler - elle est mise à feu correctement. En utilisant le code de MSDN. Je reçois une chaîne vide ("") pour mon adresse.CommandArgument, et c'est jeter une erreur lors de l'exécution (ne peut pas analyser "à" int).

Je peux voir dans le débogueur, il est un " rowIndex la propriété d'être stockées (correctement pour mon clic) ailleurs dans e, puis-je en bénéficier? Je pense que MSDN code du travail est-il autre chose que j'ai fait faire cette erreur se produit, ou un autre moyen pour résoudre ce problème? Merci.

void resetpassword(Object sender, GridViewCommandEventArgs e)
{
    //If multiple ButtonField columns are used, use the
    //CommandName property to determine which button was clicked.
    if (e.CommandName == "resetpass")
    {
        //Convert the row index stored in the CommandArgument
        //property to an Integer.
        int index = Convert.ToInt32(e.CommandArgument);

        //Retrieve the row that contains the button clicked
        //by the user from the Rows collection. Use the
        //CommandSource property to access the GridView control.
        GridView GridView1 = (GridView)e.CommandSource;
        GridViewRow row = GridView1.Rows[index];

        String usrname = row.FindControl("username").ToString();

aspx code de la page:

<asp:TemplateField HeaderText="Reset Password">
                <ItemTemplate>
                    <asp:ImageButton ID="ibtnReset" runat="server" CausesValidation="false" 
                        CommandName="resetpass" ImageUrl="~/Images/glyphicons_044_keys.png" Text="Button" />
                </ItemTemplate>
                <HeaderStyle Width="70px" />
                <ItemStyle HorizontalAlign="Center" />
            </asp:TemplateField>

Événement ajoutez le code:

 protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        GridView1.RowCommand += new GridViewCommandEventHandler(this.resetpassword);
    }

OriginalL'auteur Volvox | 2012-05-04