2010-01-11 6 views
0

Im nouveau pour C# et en VB je pouvais faire ce qui suit:accès aux données dans RowCommand

Protected Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand 
     If e.CommandName = "CommandName" Then 

      Dim label1 As Label = e.Item.FindControl("label1") 

      Response.Write(label1.Text)) 


     End If 

    End Sub 

en C# et le RowCommand, je ne peux pas utiliser FindControl pour accéder à une valeur de contrôle. Je veux obtenir la valeur de deux de l'étiquette afin que je puisse les utiliser quand je l'appelle une méthode dans la RowCommand

Mise à jour: En C# quand je fais

Label label1 = (Label)e.Item.FindControl("label1"); 

ou

Label label1 = (Label)e.Row.FindControl("label1"); 

Je n'ai pas Ligne ou Article disponible

+0

Gérez-vous le même événement en C# que vous êtes en VB? –

Répondre

0

J'ai ajouté un CommandArgument sur le bouton et a été en mesure d'obtenir ce que je avais besoin:

.aspx dans le grille

<asp:Button ID="btnActive" CommandArgument='<%# Eval("Id")%>' CommandName='<%# Eval("Activity")%>' Text='<%# Eval("Activity")%>' runat="server" /> 

puis dans RowCammand dans .aspx.cs

protected void gridview_RowCommand(object source, System.Web.UI.WebControls.GridViewCommandEventArgs e) 
       { 
        if (e.CommandName == "Disable") 
        { 
          string[] args = e.CommandArgument.ToString().Split(','); 
          Guid gArticleId = new Guid(args[0]); 

          Response.Write(gArticleId); 

        } 
0

Où Label1 existe-t-il? Pourriez-vous poster votre exemple C#? Il devrait également être le type DataGridCommandEventArgs, alors peut-être que c'est un argument différent? Je ne vois pas, comme le même type d'argument, comment l'élément ne pourrait pas exister. C'est difficile à dire sans voir l'exemple complet de C#.

0

Voici mon code:

<asp:GridView ID="gridview1" runat="server" Width="98%" AutoGenerateColumns="false" 
     AllowPaging="True" PageSize="10" PagerStyle-HorizontalAlign="center" 
     OnRowCommand="gridView_RowCommand" 
     > 
    <columns> 
     <asp:TemplateField HeaderText="Active" HeaderStyle-HorizontalAlign="Left"> 
      <ItemTemplate> 
       <asp:Label ID="lblArticleId" Text='<%# Eval("Id")%>' Visible="false" runat="server"></asp:Label> 
       <asp:Button ID="btnActive" CommandName='<%# Eval("Activity")%>' Text='<%# Eval("Activity")%>' runat="server" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </columns> 
</asp:GridView> 

.cs:

protected void gridView_RowCommand(object source, System.Web.UI.WebControls.GridViewCommandEventArgs e) 
      { 
       if (e.CommandName == "Disable") 
       { 
        UpdateArticleVisibility(true, [lblArticleID.Text value], gOrgId); 
       } 

       if (e.CommandName == "Enable") 
       { 
        UpdateArticleVisibility(false, [lblArticleID.Text value], gOrgId); 
       } 
      }