2011-02-06 7 views
3

동적으로 설정된 ID를 가져 오는 체크 박스 필드가있는 ListView가 있습니다.목록보기 내의 체크 박스 값 확인

나는 또한 checboxes가 체크 되었는지를 확인해야 할 때 버튼을 가지고 있지만 어떻게해야하는지 잘 모르겠습니다.

내가 어떻게 이런 일을 할 수 있는지에 대한 아이디어가 있습니까?

감사

이 내 코드입니다 :

<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

면책 조항 : 나는 백 엔드/WPF 개발자의 더 해요. 좀 더 세련된 해결책이있을 수 있지만 이것은 효과가있는 것 같습니다.

는 데이터 소스의 ID에있는 확인란의 값이 고유하지 않습니다 귀하의 체크 박스 ID를 변경 (죄송합니다,이 W3C 유효성 검사를 중단합니다)와 서버를 RUNAT하도록 설정하고 설정

:

<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의 항목 컬렉션을 반복하고 체크 박스 찾을 :

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 
} 
: 당신이 Linq에 약간을 원한다면

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; 
    } 
    } 
}