2010-06-16 4 views
2

Je suis assez nouveau à C# et asp.net alors excuses si c'est une question vraiment stupide. J'utilise une vue de grille pour afficher un certain nombre d'enregistrements à partir d'une base de données.Grille Voir le bouton Passer des données via le clic

Chaque ligne a un bouton Modifier. Lorsque le bouton est cliqué, je veux qu'un identifiant soit renvoyé à une fonction dans mon fichier .cs. Comment lier le rowID au champ Button?

Je me suis fatigué en utilisant un lien hypertexte à la place, mais cela ne semble pas fonctionner parce que je poste sur la même page qui a déjà un permanent sur l'URL.

asp.net

<asp:GridView ID="gvAddresses" runat="server" onrowcommand="Edit_Row"> 
    <Columns> 
     <asp:ButtonField runat="server" ButtonType="Button" Text="Edit"> 
    </Columns> 
</asp:GridView> 

C#

 int ImplantID = Convert.ToInt32(Request.QueryString["ImplantID"]); 
     Session.Add("ImplantID", ImplantID); 

     List<GetImplantDetails> DataObject = ImplantDetails(ImplantID); 

     System.Data.DataSet DSImplant = new DataSet(); 
     System.Data.DataTable DTImplant = new DataTable("Implant"); 

     DSImplant.Tables.Add(DTImplant); 

     DataColumn ColPostCode = new DataColumn(); 
     ColPostCode.ColumnName = "PostCode"; 
     ColPostCode.DataType = typeof(string); 
     DTImplant.Columns.Add(ColPostCode); 

     DataColumn ColConsigneeName = new DataColumn(); 
     ColConsigneeName.ColumnName = "Consignee Name"; 
     ColConsigneeName.DataType = typeof(string); 
     DTImplant.Columns.Add(ColConsigneeName); 

     DataColumn ColIsPrimaryAddress = new DataColumn(); 
     ColIsPrimaryAddress.ColumnName = "Primary"; 
     ColIsPrimaryAddress.DataType = typeof(int); 
     DTImplant.Columns.Add(ColIsPrimaryAddress); 

     DataColumn ColImplantCustomerDetailsID = new DataColumn(); 
     ColImplantCustomerDetailsID.ColumnName = "Implant ID"; 
     ColImplantCustomerDetailsID.DataType = typeof(int); 
     DTImplant.Columns.Add(ColImplantCustomerDetailsID); 

     foreach (GetImplantDetails Object in DataObject) 
     { 

      DataRow DRImplant = DTImplant.NewRow(); 
      DRImplant["PostCode"] = Object.GetPostCode(); 
      DRImplant["Consignee Name"] = Object.GetConsigneeName(); 
      DRImplant["Primary"] = Object.GetIsPrimaryAddress(); 
      DRImplant["Implant ID"] = Object.GeTImplantCustomerDetailsID(); 
      DTImplant.Rows.Add(DRImplant); <--- this is what I need to be added to the button 

     } 

     gvAddresses.DataSource = DTImplant; 
     gvAddresses.DataBind(); 

Répondre

2

Dans votre méthode Edit_Row vous pouvez accéder à l'index de la ligne que vous modifiez comme:

int rowIndex = (int)e.CommandArgument; 

Une fois que vous avez cette vous pouvez accéder directement à la ligne et sortir les valeurs souhaitées:

GridViewRow row = gvTest.Rows[rowIndex]; 
int implantId = Int32.Parse(string row.Cells[3].Text); 

Vous pouvez également ajouter la propriété DataKeyNames="Implant ID" à votre GridView et accéder à l'identifiant de cette façon:

int implantId = Int32.Parse(gvTest.DataKeys[rowIndex]["Implant ID"].ToString()); 
+0

Merci! Désolé je ne suis pas sûr que j'ai expliqué le probelm correctement. Ça ou je ne comprends pas tout à fait ton énigme. ImplantID est un champ dans la base de données. Je veux donc le sortir de la base de données (que je peux faire) et l'attacher ensuite au bouton de sorte que lorsque l'Onclick est déclenché, je sais quel enregistrement doit être édité. – flyersun

Questions connexes