2011-02-06 4 views
3

У меня есть ListView с полем флажка внутри, которое получает идентификатор, заданный динамически.проверить значение флажков внутри listview

У меня также есть кнопка, которая при нажатии должна проверять, проверен ли какой-либо чехол, но я не уверен, как это сделать.

Любая идея о том, как я могу это сделать?

Благодаря

Это мой код:

<asp:ListView ID="ListView1" runat="server" DataKeyNames="Id" 
    DataSourceID="EntityDataSource1" EnableModelValidation="True"> 

    <ItemTemplate> 
     <tr> 
      <td class="firstcol"> 
       <input id='Checkbox<%# Eval("Id") %>' type="checkbox" /> 
      </td> 
     </tr> 
    </ItemTemplate> 

    <LayoutTemplate> 
     <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <th width="50" scope="col" class="firstcol"> 

       </th> 
      </tr> 
      <tr ID="itemPlaceholder" runat="server"></tr> 
     </table> 
     <asp:Button ID="btnDownload" runat="server" Text="Download" Height="26px" 
    onclick="btnDownload_Click" /> 
    </LayoutTemplate> 
</asp:ListView> 



protected void btnDownload_Click(object sender, EventArgs e) 
{ 
    ??????? 
} 

ответ

5

отказ от ответственности: Я больше разработчиков фоновым/МОФ. Есть, вероятно, более элегантные решения, но это, похоже, работает.

Измените флажок идентификатор, так что это не единственный (извините, это нарушит w3c валидацию) и установить его на RUNAT сервер и установить значение CheckBox для Id вашего источника данных:

<ItemTemplate> 
<tr> 
    <td class="firstcol"> 
    <label runat="server"><%# Eval("Id") %></label> 
    <input id="MyCheckBox" value='<%# Eval("Id") %>' 
      type="checkbox" runat="server" /> 
    </td> 
</tr> 
</ItemTemplate> 

Вы можете затем перебирать коллекцию предметов в ListView и найти CheckBoxes:

protected void btnDownload_Click(object sender, EventArgs e) 
{ 
    foreach(ListViewDataItem item in ListView1.Items) 
    { 
    var chk = item.FindControl("MyCheckBox") as System.Web.UI.HtmlControls.HtmlInputCheckBox; 
    if(chk != null && chk.Checked) 
    { 
     string value = chk.Value; 
    } 
    } 
} 

Если вы хотите немного Linq:

protected void btnDownload_Click(object sender, EventArgs e) 
{ 
    var checkedCheckBoxes = ListView1.Items.Select(x => x.FindControl("MyCheckBox") as HtmlInputCheckBox) 
    .Where(x => x != null && x.Checked); 

    // do stuff with checkedCheckBoxes 
} 
Смежные вопросы