2013-05-28 37 views
8

如何在Repeater中设置dropDownList的选定项目?Repeater中的DropDownList的SelectedValue

中继器绑定到repeaterData DataTable,dropDownList在后面的代码中绑定到dropDownList DataTable。我需要将DropDownList的SelectedValue属性设置为repeaterData表中字段的值。

这是我已经试过:

<asp:Repeater runat="server" ID="myRepeater> 
<ItemTemplate> 
    <asp:DropDownList runat="server" CssClass="fullSelect" ID="degree_dropdown" 
      AppendDataBoundItems="true" 
      selectedValue='<%#DataBinder.Eval(Container.DataItem,"degreeCode")%>'> 
        <asp:ListItem Text="Select Degree" /> 
    </asp:DropDownList> 
</ItemTemplate> 
</asp:Repeater> 

代码来填充转发:

myRepeater.DataSource = myRepeaterData; //myRepeaterData is a datatable 
myRepeater.DataBind(); 

代码来填充下拉列表:

protected void educationPopup_repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
     { 
      DropDownList degree_dropdown = e.Item.FindControl("degree_dropdown") as DropDownList; 
      if (degree_dropdown != null) 
      { 
       degree_dropdown.DataSource = degrees; //a datatable 
       degree_dropdown.DataTextField = "degree"; 
       degree_dropdown.DataValueField = "code"; 
       degree_dropdown.DataBind(); 
      } 
} 
+0

你用什么事件或方法来填充'degree_dropdown '用数据?你能发布代码吗? – Win

回答

7

你几乎没有。你只需要投DataItemDataRowView,并将其分配给DropDownList这样的 -

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || 
     e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     var degree_dropdown = e.Item.FindControl("degree_dropdown") as DropDownList; 
     string degreeCode = (string) ((DataRowView) e.Item.DataItem)["degreeCode"]; 

     if (degree_dropdown != null) 
     { 
      degree_dropdown.DataSource = degrees; //a datatable 
      degree_dropdown.DataTextField = "degree"; 
      degree_dropdown.DataValueField = "code"; 
      degree_dropdown.DataBind(); 

      if (degree_dropdown.Items.FindByValue(degreeCode) != null) 
       degree_dropdown.SelectedValue = degreeCode; 
     } 
    } 
} 
0

随着HTML5 custom attributes,您可以设置您的下拉值转换成数据属性,然后将其设置为选择的值下拉被databinded后。我已经绑定使用ASP下拉:代码隐藏的ObjectDataSource

<asp:Repeater runat="server" ID="myRepeater> 
<ItemTemplate> 

<asp:DropDownList runat="server" CssClass="fullSelect" ID="degree_dropdown" 
      AppendDataBoundItems="true" 
      SetValue='<%#DataBinder.Eval(Container.DataItem,"degreeCode")%>' 
datasourceid="dsCategory" datatextfield="degree" datavaluefield="code" onprerender="DropDownDataBinding"> 
        <asp:ListItem Text="Select Degree" /> 
    </asp:DropDownList> 
<asp:ObjectDataSource ID="dsCategory" runat="server" SelectMethod="LoadDegree" TypeName="WebApplication.WebForm1" /> 
</ItemTemplate> 
</asp:Repeater> 

protected void DropDownDataBinding(object sender, EventArgs e) //Method to set the selected value on Category dropdown inside repeater 
{ 
    DropDownList sel = (DropDownList)sender; 
    sel.Value = sel.Attributes["SetValue"]; 
    ListItem li = new ListItem("<<Select>>", ""); 
    sel.Items.Insert(0,li); 
} 

protected DataTable LoadDegree() 
{ 
     DataTable dt = new DataTable(); 
     dt = degrees; //a datatable 
     return dt; 

} 

在你的中继控制的结合将保持不变

相关问题