2013-09-02 5 views
0

я "использует DataList. В моем FooterTemplate добавить переключатель II хочет проверить. Но всегда возвращают ложь.Как получить значение, отмеченное значком переключателя, в шаблоне данных нижнего колонтитула DataList?

Это мой код

<asp:DataList ID="dlDelivery" OnItemDataBound="dlDelivery_DataBound" RepeatColumns="1" RepeatDirection="Vertical" Width="300" runat="server"> 
    <ItemTemplate> 
     <asp:RadioButton ID="rdoDel" GroupName="aaa" OnCheckedChanged="rdoOther_Changed" AutoPostBack="true" runat="server" /> 
     <asp:Label ID="lblDel1" Text='<%# Eval("Street") %>' runat="server" /><br /> 
     <asp:Label ID="lblDel2" Text='<%# Eval("Suburb") %>' runat="server" /> 

     <span class="clear" /> 
    </ItemTemplate> 
    <FooterTemplate> 
    <asp:RadioButton ID="rdoOther" Text="Other" OnCheckedChanged="rdoOther_Changed" AutoPostBack="true" GroupName="aaa" runat="server" /> 
    a 
    <br class="clear" /> 

    </FooterTemplate> 
    </asp:DataList> 

проверить чек rdoOther как этот

RadioButton rdoOther = (RadioButton)dlDelivery.Controls[dlDelivery.Controls.Count - 1].Controls[0].FindControl("rdoOther"); 

      if (rdoOther.Checked = true) // this always fales 
{ 
} 

Как это исправить?

+0

где вы свяжете данные? можете ли вы показать код привязки? и условие должно быть 'if (rdoOther.Checked) {}' – Damith

ответ

1

Попробуйте

 foreach (DataListItem item in dlDelivery.Items) 
     { 
      if (item.ItemType == ListItemType.Footer) 
      { 
       RadioButton rdoOther = (RadioButton)item.FindControl("rdoOther"); 

      } 
     } 
0

Просто поиск радиокнопки в e.Item:

protected void dlDelivery_DataBound(object sender, DataListItemEventArgs e) 
{ 
    RadioButton rdoOther = e.Item.FindControl("rdoOther") as RadioButton; 

    //rdoOther will be null if ListItemType is not footer. 
    if (rdoOther !=null && rdoOther.Checked) 
    { 
     // Do your tasks 
    } 
} 
Смежные вопросы