2012-06-18 3 views
3

영문 파일 :Repeater의 ASP.NET RadioButtonList?

<asp:Repeater ID="Repeater_sorular" runat="server"> 
    <HeaderTemplate> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <div class="div_soru"> 
     <div class="div_soru_wrapper"> 
      <%#Eval("Subject")%> 
      <asp:RadioButtonList ID="RadioButtonList_secenekler" runat="server" Visible='<%# Eval("TypeId").ToString() == "1" %>' 
       DataSource='<%#Eval("Secenekler")%>' DataTextField='<%#Eval("OptionName")%>' DataValueField='<%#Eval("OptionId")%>'> 
      </asp:RadioButtonList> 
      <asp:CheckBoxList ID="CheckBoxList_secenekler" runat="server" Visible='<%# Eval("TypeId").ToString() == "2" %>' 
       DataSource='<%#Eval("Secenekler")%>' DataTextField='<%#Eval("OptionName")%>' DataValueField='<%#Eval("OptionId")%>'> 
      </asp:CheckBoxList> 
     </div> 
     </div> 
    </ItemTemplate> 
    <FooterTemplate> 
    </FooterTemplate> 
</asp:Repeater> 

및 코드 숨김 :

SpAnketDataContext db = new SpAnketDataContext(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     BindRepeaterSorular(); 
    } 
} 

protected void ImageButton_kaydet_OnCommand(object source, CommandEventArgs e) 
{ 

} 

private void BindRepeaterSorular() 
{ 
    int anket_id = 3; 

    var sorular = from soru in db.TableSurveyQuestions 
        where soru.SurveyId == anket_id 
        select new 
        { 
         soru.TypeId, 
         soru.Subject, 
         soru.QuestionId, 
         soru.SurveyId, 
         soru.QueueNo, 
         SurveyTitle = soru.TableSurvey.Title, 
         TypeName = soru.TableSurveyQuestionType.TypeName, 

         Secenekler = from secenekler in soru.TableSurveyOptions 
            select new 
            { 
             secenekler.OptionId, 
             secenekler.OptionName, 
             secenekler.QuestionId, 
            } 
        }; 

    Repeater_sorular.DataSource = sorular; 
    Repeater_sorular.DataBind(); 
} 

그리고 내 질문 : 나는 datavaluefield을 구속하고 datatextfiled 캔트

. 위에 정의 된대로 쓰는 경우. 나는이 오류가있어.

DataBinding: '<>f__AnonymousType1`8[[System.Nullable`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Nullable`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Nullable`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Collections.Generic.IEnumerable`1[[<>f__AnonymousT...' does not contain a property with the name 'OptionName'. 

어떻게 값과 텍스트를 바인딩 할 수 있습니까?

감사합니다. (당신의 RadioButtonList의 선언과 CheckBoxList, 모두)

does not contain a property with the name 'OptionName' 

그냥이 변경 :

DataTextField='<%#Eval("OptionName")%>' DataValueField='<%#Eval("OptionId")%>' 

사람 :

답변

2

오류는 분명히 자신을 설명

DataTextField="OptionName" DataValueField="OptionId" 

그리고 그건 그것, 당신은 바인딩을 평가할 필요가 없습니다, 그냥 th의 이름을 지정 전자 속성. 코드의 나머지 부분은 요청에 따라

편집

좋아 보인다는 RadioButtonList에서 선택한 항목을 얻을 수 있습니다 : 뒤에

<asp:GridView runat="server" OnRowCommand="grdProducts_RowCommand" ID="grdProducts"> 
    <Columns> 
     <asp:TemplateField ShowHeader="False"> 
      <ItemTemplate> 
       <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" 
        CommandName="myLink" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' Text="Button"></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:RadioButtonList DataTextField="NestedValue" DataValueField="ID" runat="server" DataSource='<%# Eval("Nested") %>' ID="radios"> 
       </asp:RadioButtonList> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

<asp:Label runat="server" ID="lblMessage" /> 

코드 : 작동

protected void grdProducts_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     switch (e.CommandName) 
     { 
      case "myLink": 
       var row = this.grdProducts.Rows[int.Parse(e.CommandArgument.ToString())]; 
       var radios = row.FindControl("radios") as RadioButtonList; 
       this.lblMessage.Text += "<br/>" + radios.UniqueID; 
       this.lblMessage.Text += "<br/> dedede " + radios.SelectedValue; 
       break; 
     } 
    } 
+0

Thansk 답변. –

+0

다른 질문을하고 싶습니다. 이렇게 나는이 listitems 가치를 얻을 수 있는다. 이것에 관해서 나에게 출발점을 줄 수 있습니까? 링크 등이 될 수 있습니다. 고마워요. –

+0

내놔 대답을 업데이 트합니다 – Jupaol