2014-05-19 3 views
1

충분히 단순 해 보이지만 알아낼 수는 없습니다.페이지를 처음로드 할 때 확인란의 모든 확인란을 선택하는 방법은 무엇입니까?

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     foreach (ListItem item in CheckBoxListDivision.Items) 
      item.Selected = true; 
    } 
} 

이 마크 업 :

  <asp:CheckBoxList ID="CheckBoxListDivision" runat="server" DataSourceID="SqlDataSourceDivisions" DataTextField="Divisions" DataValueField="Divisions" RepeatColumns="4"> 
     </asp:CheckBoxList> 
     <asp:SqlDataSource ID="SqlDataSourceDivisions" runat="server" ConnectionString="<%$ ConnectionStrings:WebPortal_Call4HealthReports_ConnectionString %>" SelectCommand="usp_HR_DivisionsSelectAll" SelectCommandType="StoredProcedure"></asp:SqlDataSource> 

당신의 시간과 노력에 감사드립니다 나는이 코드를 시도했습니다.

+0

'Listitem'은 (는) 양식 태그에 있습니까? aspx 페이지를로드 할 때 처음에는 코드가 훌륭하게 작동합니다. 하지만 새로 고치거나이 코드를 제출하면 더 이상 작동하지 않습니다. – Tinwor

+0

아니요, ListItem이 태그에 없습니다. 예, 페이지가 처음로드 될 때만 이벤트가 발생하도록하고 싶습니다. – kenalacom

+0

당신은 그 코드를 시도했다고 말합니다. 그러나 당신은 그것을 이해할 수 없다고 말합니다. 게시 한 코드로 어떤 작업을하지 못합니까? 문제가 무엇인지 정확하게 설명해야합니다. – mason

답변

5

항목을 선택하지 않는 이유는 CheckBoxList 항목을 바인딩하기 전에 Page_Load 이벤트가 호출되기 때문입니다.

첫 번째 옵션 : 페이지가로드 당신은 두 가지 옵션이 있습니다 그래서 위해 모든 항목을 선택 당신이 CheckBoxList의 OnDataBound 경우에 사용하는 동일한 코드를 넣습니다.

이에 CheckBoxList 마크 업을 수정

<asp:CheckBoxList OnDataBound="CheckBoxListDivision_DataBound" 
ID="CheckBoxListDivision" runat="server" DataSourceID="SqlDataSourceDivisions" DataTextField="Name" DataValueField="ID" 
      RepeatColumns="4" > 
    </asp:CheckBoxList> 

을 그리고이 추가 코드 숨김 :

protected void CheckBoxListDivision_DataBound(object sender, EventArgs e) 
    { 
     foreach (ListItem item in CheckBoxListDivision.Items) 
     { 
      item.Selected = true; 
     } 
    } 

두 번째 옵션 :는 프로그래밍 방식으로 마크 업 및 바인드 CheckBoxList에서의 SqlDataSource를 제거 Page_Load 이벤트에서 CheckBoxList를 바인딩 한 후 루프를 수행하면 항목을 선택할 수 있습니다.

희망이 도움이됩니다.

+0

Black Baron, 첫 번째 옵션을 사용했는데 완벽하게 작동합니다. ListItems는 ** 데이터 바인딩 후 ** 존재 함을 의미합니다. – kenalacom

관련 문제