2013-05-28 5 views
8

repeater 내부에서 dropDownList의 선택된 항목을 어떻게 설정합니까?Repeater의 DropDownList SelectedValue

repeater는 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

'데이터가 있습니까? 코드를 게시 할 수 있습니까? – Win

답변

7

당신은 거의있다. 드롭 다운이 databinded 후 당신이 선택한 값으로 설정 한 후 데이터 속성으로 드롭 다운 값을 설정 할 수 있습니다, HTML5 custom attributes

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

- 당신은 다음과 같이 DropDownListDataRowViewDataItem 캐스팅하고 할당해야 . 내가 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; 

} 

당신의 Repeater 컨트롤의 결합 남아 당신이`degree_dropdown를 채우는 데 사용합니까 어떤 사건이나 방법 같은