2009-11-04 5 views
1

J'ai une liste déroulante. Je dois lier avec deux champs de valeur datatable icicomment ajouter 2 valeur de colonne du champ de table dans la liste déroulante

ddlitem.datasource= dtitem 
ddlitem.datatextfield = dtitem.cloumn["name"].tostring()+"-"+dtitem.cloumn["tagname"].tostring() 

que je fais comme ça, je me fais exception. Comment puis-je combiner à la fois la valeur de la colonne dans la liste déroulante

et lorsque je récupère la valeur sélectionnée de la liste déroulante

je devrais obtenir que la valeur de cette valeur de la colonne: dtitem.cloumn["name"].tostring()

string stritem= ddlitem.selecteditem.Text.Tostrigng(); 

si comment puis-je faire le fractionnement de la valeur de la chaîne?

Répondre

2

vous devez itérer 1 des lignes de colonne et doivent cancatinate vos articles plutôt toute la colonne

Edit:

devrait ressembler ...

for (int count = 0; count < dtitem.Rows.Count; count++) 
    { 
     dtitem.Rows[count]["name"] = dtitem.Rows[count]["name"].tostring() + "-" + dtitem.Rows[count]["tagname"].tostring(); 
    } 
1

DropDownList.DataTextField sera seulement travailler avec sur la colonne/le champ de l'objet auquel vous vous liez. Si vous devez afficher des valeurs multiples, vous avez quelques options:

  • Modifiez votre requête pour concaténer les valeurs avant que l'objet ne soit transmis à votre liste déroulante pour la liaison.
  • Créez une collection dérivée de votre objet de données, qui concatène les valeurs, puis lient THAT à votre liste déroulante.
  • Ajoutez chaque élément à votre liste déroulante par programme, en concaténant les valeurs au fur et à mesure.
2

Je suppose que dtitem est un objet DataRow. Je vous recommande de créer un objet de dictionnaire et le remplir comme

Dictionary<string,string> dicts = new Dictionary<string,string>(); 

foreach(DataRow row in dt.Rows) 
{ 
    string key = row["name"].ToString(); 
    string val = String.Format("{0}-{1}",row["name"],row["tagname"]); 
} 

puis liez DropDown

dropdown.DataSource = dicts; 
dropdown.DataValueField = "Key"; 
dropdown.DataTextField = "Value"; 
dropdown.DataBind(); 

quand vous obtenez dropdown.SelectedValue, son déjà name pour ne pas avoir besoin de se séparer de tagname

0
Dictionary<string,string> dicts = new Dictionary<string,string>(); 

foreach(DataRow row in dt.Rows) 
{ 
    string key = row["name"].ToString(); 
    string val = String.Format("{0}-{1}",row["name"],row["tagname"]); 
} 

S'il vous plaît Réécrire cela

Dictionary<string,string> dicts = new Dictionary<string,string>(); 

foreach(DataRow row in dt.Rows) 
{ 
    string key = row["name"].ToString(); 
    string val = String.Format("{0}-{1}",row["name"],row["tagname"]); 
    dicts.Add(key, val); 
} 
1

Essayez d'utiliser les éléments suivants:

public void Populate_DriverDropDown() 
    { 
     //Opening and closing connection not required while using SqlDataAdapter 

     //sql command to select the drivers and their ids (displaying both the drivername and firstSurname) 
     String sqlQuery = "SELECT driverID, nameDriver+' '+firstSurname AS driverFullname FROM driver ORDER BY driverID ASC"; 
     //end 

     //using SqlDataAdapter and DataSet 
     SqlDataAdapter Da = new SqlDataAdapter(sqlQuery, DBConn); 

     DataSet Ds = new DataSet(); 

     Da.Fill(Ds, "driver"); 

     if (Ds.Tables[0].Rows.Count > 0) 
     { 
      //populating each dropdown row with driver name and id. 
      foreach (DataRow Dr in Ds.Tables[0].Rows) 
      { 
       VehicleDriver.Items.Add(new ListItem(Dr["driverFullname"].ToString(), Dr["driverID"].ToString())); 
      } 
     } 

     //to have select option at the top of the dropdown list 
     VehicleDriver.Items.Insert(0, "Select a driver"); 

    } 
Questions connexes