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
Vous devez vous connecter pour publier un commentaire.
Passer le
CommandArgument
(en supposant que vous voulez passer le champ de clé primaire appeléPK
):ou obtenir la référence de la
GridViewRow
via leNamingContainer
de votreImageButton
:Vous pouvez également passer le RowIndex comme CommandArgument:
La
ButtonField
classe remplit automatiquement laCommandArgument
propriété avec la valeur de l'indice. Pour les autres boutons de commande, vous devez définir manuellement leCommandArgument
propriété du bouton de commande.OriginalL'auteur Rango
Je pense que vous êtes absent de
CommandArgument='<%# Container.DataItemIndex %>'
pour votre code.
Ici est une question TELLEMENT ASP.NET GridView RowIndex Comme CommandArgument pour plus de lecture.
Voici la MSDN source
ButtonField
j'ai fourni MSDN lien dans ma mise à jour.Merci pour votre aide! Je vais vérifier.
OriginalL'auteur jams