2012-10-24 8 views
-1

J'ai une liste déroulante dans un Gridview et je dois montrer les enregistrements associés à chaque id.Et l'ID contient plus de 10 enregistrements alors comment puis-je leur montrer ??Remplir une liste déroulante dans une grille

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       con.Open(); 
       var ddl = (DropDownList)e.Row.FindControl("DropDownList1"); 
       //int CountryId = Convert.ToInt32(e.Row.Cells[0].Text); 
       SqlCommand cmd = new SqlCommand("select LastName from Profile_Master",  con); 
       SqlDataAdapter da = new SqlDataAdapter(cmd); 
       DataSet ds = new DataSet(); 
       da.Fill(ds); 
       con.Close(); 
       ddl.DataSource = ds; 
       ddl.DataTextField = "LastName"; 
       ddl.DataBind(); 

      } 
     } 
+0

avez-vous essayé d'assigner 'ddl.DataValueField' à une autre colonne comme ID? – Ahmad

+0

Non je ne suis pas assigné comme ça mais quelle est l'utilité ?? –

Répondre

0
 FillSelect(myDropDownList, "--select--", "0", true); 
     public static void FillSelect(DropDownList DropDown, string SelectItemText, string SelectItemValue, bool includeselectitem) 
     { 
      List<PhoneContact> obj_PhoneContactlist = getAll(); 

      if (obj_PhoneContactlist != null && obj_PhoneContactlist.Count > 0) 
      { 
       DropDown.DataTextField = "PhoneContactName"; 
       DropDown.DataValueField = "id"; 
       DropDown.DataSource = obj_PhoneContactlist.OrderBy(o => o.PhoneContactName);//linq statement 
       DropDown.DataBind(); 

       if (includeselectitem) 
        DropDown.Items.Insert(0, new ListItem(SelectItemText, SelectItemValue)); 
      } 
     } 
     public static List<PhoneContact> getAll() 
     { 

     obj_PhoneContactlist = new List<PhoneContact>(); 
     string QueryString; 
     QueryString = System.Configuration.ConfigurationManager.ConnectionStrings["Admin_raghuConnectionString1"].ToString(); 

     obj_SqlConnection = new SqlConnection(QueryString); 

     obj_SqlCommand = new SqlCommand("spS_GetMyContacts"); 
     obj_SqlCommand.CommandType = CommandType.StoredProcedure; 
     obj_SqlConnection.Open(); 
     obj_SqlCommand.Connection = obj_SqlConnection; 
     SqlDataReader obj_result = null; 
     obj_SqlCommand.CommandText = "spS_GetMyContacts"; 
     obj_result = obj_SqlCommand.ExecuteReader(); 


     //here read the individual objects first and append them to the listobject so this we get all the rows in one list object 

     using (obj_result) 
     { 
      while (obj_result.Read()) 
      { 
       obj_PhoneContact = new PhoneContact(); 
       obj_PhoneContact.PhoneContactName = Convert.ToString(obj_result["PhoneContactName"]).TrimEnd(); 
       obj_PhoneContact.PhoneContactNumber = Convert.ToInt64(obj_result["PhoneContactNumber"]); 
       obj_PhoneContact.id = Convert.ToInt64(obj_result["id"]); 

       obj_PhoneContactlist.Add(obj_PhoneContact); 
      } 

     } 

     return obj_PhoneContactlist; 
     } 

Je l'ai fait pour obtenir mes phonecontacts qui sont dans la base de données dans la liste déroulante vous pouvez modifier les procédures stockées et les valeurs en fonction de vos besoins.

Hope this helps: D

+0

Mais comment obtenir les enregistrements associés à chaque ID ?? –

+0

vous devez le modifier dans la procédure stockée, j'ai utilisé spS_GetMyContacts en ce que j'ai utilisé l'instruction pour obtenir tous les contacts au lieu de que vous devez obtenir les valeurs basées sur l'ID seule une instruction unique – Raghurocks

+0

pour obtenir les valeurs selon l'id vous pouvez même envoyer le présent ID comme l'un des paramètres et obtenir les valeurs selon l'ID – Raghurocks

0

Nous venons couru dans cette question où je travaille. Notre façon de contourner ce problème était d'obtenir d'abord le DropDownLists UniqueID. C'est fondamentalement un identifiant de client. L'intérieur de cet ID est une référence à la ligne du GridView à partir de laquelle il a été sélectionné. LE SEUL PROBLEME est qu'il semble ajouter 2 au nombre de lignes. Donc, si vous sélectionnez DropdownList de Row 1, l'identifiant unique vous apportera une référence à la 3ème ligne. Donc:

Obtenez l'ID unique> Divisez-le comme vous le souhaitez pour obtenir la ligne> utilisez le numéro de ligne pour obtenir les valeurs dont vous avez besoin.

Questions connexes