2011-05-18 3 views
0

Comment démarrer une liste déroulante avec des valeurs vides?Liste déroulante dans un répéteur

Est-ce que quelqu'un a des suggestions sur la façon dont je peux contourner ce problème , en plus de créer une entrée de gestionnaire vide dans la table, ce qui n'est évidemment pas idéal!

Merci beaucoup!

ASPX PAGE

<asp:Repeater ID="GeneralRepeater" runat="server" 
OnItemDataBound="GeneralRepeater_OnItemDataBound"> 
    <ItemTemplate> 
    <tr> 
     <td> 
     DxPoc: 
     <asp:DropDownList ID="GeneralDDL" DataTextField="DiagnosisCode" 
     DataValueField="DiagnosisCode" runat="server" /> 
    </td> 
    </tr> 
    </ItemTemplate> 
</asp:Repeater> 

CODE DERRIÈRE:

protected void GeneralRepeater_OnItemDataBound(object sender, 
               RepeaterItemEventArgs e) 


    { 
      if (e.Item.ItemType == ListItemType.Item || 
       e.Item.ItemType == ListItemType.AlternatingItem) 
      { 
       DropDownList myDDL = (DropDownList)e.Item.FindControl("GeneralDDL"); 
       Diagnosis oDiagnosis = new Diagnosis(); 
       DataView dv = new DataView(oDiagnosis.GetDiagnosis()); 
       myDDL.DataSource = dv; 
       myDDL.DataTextField = "DiagnosisCode"; 
       myDDL.DataValueField = "DiagnosisCode"; 
       myDDL.DataBind(); 

      } 
     } 
+0

quel est votre problème? vous avez posté la même question http://stackoverflow.com/questions/6039318/getting-dropdownlist-values-in-a-repeater –

+0

@Muhammad, im fait sur le databind de dropdownlist à l'intérieur du répéteur. Maintenant, je dois commencer pour chaque page de chargement que ma liste déroulante aura un champs vides, puis un databind .. –

Répondre

0

Vous voulez insérer un code comme celui-ci dans votre fonction ItemDataBound, après la LDD a été DataBound:

ListItem LI = New ListItem("(empty item)", "0"); 
    myDDL.Items.Insert(0, LI); 
    myDDL.SelectedValue = "0"; 
0

Cherchez-vous cela?

modifier votre listitem en mettant AppendDataBoundItems="true"

<asp:DropDownList ID="GeneralDDL" AppendDataBoundItems="true" DataTextField="DiagnosisCode" DataValueField="DiagnosisCode" 
     runat="server"> 
     <asp:ListItem Text="--Select--" Value=""></asp:ListItem> 
    </asp:DropDownList> 
+0

hmmm .. je mets asp: ListItem sur mon code .. son ne fonctionne pas .. Je pense que ce n'est pas compatible à l'intérieur du répéteur? –

+0

Vous devez définir cette AppendDataBoundItems = "true" ainsi que votre liste déroulante. –

+0

J'ai déjà défini les AppendDataBoundItems .. c'est la même chose –

0

Utilisez les éléments suivants:

dropDownList.DataSource = AddHeaderItem 
    (
     list.ToDictionary 
      (instance => instance.Key.ToString(), instance => instance.Value), 
     true, 
     "Please Select an Item..." 
    ); 


    // Add a header item to a Dictionary .. 
    public static Dictionary<String, String> AddHeaderItem 
     (Dictionary<String, String> items, Boolean addHeaderItem, 
      String headerItemText = "") 
    { 

     var headerItem = new Dictionary<String, String>(); 

     if (addHeaderItem) 
     { 
      headerItem["-1"] = headerItemText; 
     } 
     //else { } 

     return headerItem.Concat(items).ToDictionary 
      (item => item.Key, item => item.Value); 

    } 
Questions connexes