2012-11-01 3 views
0

나는 CheckBoxList을 가지고 있으며 DataBound 이벤트에 각 항목의 id을 가져와야하며 어떻게 받아야할지 모르겠다. 도와주세요. 내가 다른 체크 박스를 바인드해야 :checkboxlists databound 이벤트의 모든 항목의 ID를 얻는 방법은 무엇입니까?

HTML :

여기
<asp:CheckBoxList ID="chklstArea" 
        RepeatColumns="6" 
        RepeatDirection="Vertical" 
        runat="server" 
        ondatabound="chklstArea_DataBound"> 
</asp:CheckBoxList> 

코드 뒤에 코드 : 사실 내가해야 할 일을

protected void drpLocation_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (drpLocation.SelectedItem.Value != "") 
    { 
     lbtnSelectArea.Visible = true; 
     objAreaNew = new ClsAreaNew(); 
     ClsAreaNewProp objAreaNewProp = new ClsAreaNewProp(); 
     objAreaNewProp.LocationId = Convert.ToInt64(drpLocation.SelectedItem.Value); 
     DataTable dtAreaByLocId = objAreaNew.GetAllAreaListByLocID(objAreaNewProp); 
     if (dtAreaByLocId.Rows.Count > 0) 
     { 
      divAreaListingHeader.Visible = true; 
      chklstArea.DataSource = dtAreaByLocId; 
      chklstArea.DataTextField = "AreaName"; 
      chklstArea.DataValueField = "areaid"; 
      chklstArea.DataBind(); 
      lblStatusMessage.Text = ""; 
     } 
     else 
     { 
      divAreaListingHeader.Visible = false; 
      dtAreaByLocId = null; 
      chklstArea.DataSource = dtAreaByLocId; 
      chklstArea.DataTextField = "AreaName"; 
      chklstArea.DataValueField = "areaid"; 
      chklstArea.DataBind(); 
      lblStatusMessage.Text = "This Location does not have any area."; 
     } 
    } 
    else 
    { 
     lbtnSelectArea.Visible = false; 
     divAreaListingHeader.Visible = false; 

     chklstArea.DataSource = null; 
     chklstArea.DataTextField = "AreaName"; 
     chklstArea.DataValueField = "areaid"; 
     chklstArea.DataBind(); 
     lblStatusMessage.Text = "Please select location."; 
    } 
} 

가 여기에

내 코드입니다 이 체크 박스리스트에 바인딩 된 아이템의 id에 기초하여리스트를 표시한다. 여기처럼 나는 바인딩 영역입니다. 지금 나는 방의 다른 체크 박스 목록을 묶고 싶다. 나는 그 지역의 ID를 사용하기를 원한다.

+0

항목을 어떻게 채우십니까? –

+0

@AmiramKorach 업데이트 된 질문을 참조하십시오. – Ram

답변

0

귀하의 요구 사항에 따르면 귀하의 요구 사항에 따라 리피터 또는 확인란을 포함하는 다른 데이터 바인딩 된 컨트롤을 사용해야합니다. 아래 :

<div class="outerlin" id="divAreaListingHeader" runat="server" style="margin-top: 15px; 
          width: 99%;"> 
          <div class="maintitle"> 
           Areas</div> 
          <br /> 
          <span style="float: left; padding-left: 7px;"> 
           <input type="checkbox" id="chkAll" />Select All<br /> 
          </span> 
          <div id="divAreaListingByLocation"> 
           <asp:CheckBoxList ID="chklstArea" RepeatColumns="6" RepeatDirection="Vertical" runat="server"> 
           </asp:CheckBoxList> 
          </div> 
         </div> 
<div class="outerlin" id="divRoomListingHeader" style="margin-top: 15px; width: 99%;"> 
          <asp:Repeater ID="repRooms" runat="server" OnItemDataBound="repRooms_ItemDataBound"> 
           <ItemTemplate> 
            <div class="maintitle"> 
             Rooms</div> 
            <br /> 
            <asp:Label ID="lblAreaName" ForeColor="Green" BackColor="Red" runat="server"></asp:Label> 
            <br /> 
            <br /> 
            <span style="float: left; padding-left: 7px;"> 
             <asp:CheckBox runat="server" ID="Checkbox1" Text="Select All" /> 
             <%--<input type="checkbox" runat="server" id="Checkbox1" />Select All--%><br /> 
            </span> 
            <br /> 
            <br /> 
            <div id="divRoomListingByLocation"> 
             <asp:CheckBoxList ID="chkRoomList" RepeatColumns="6" RepeatDirection="Vertical" runat="server"> 
             </asp:CheckBoxList> 
            </div> 
           </ItemTemplate> 
          </asp:Repeater> 
         </div> 

그리고 코드 뒤에 다음과 같습니다 :

HTML 코드는

protected void repRooms_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    ClsRoomNew objRoom = new ClsRoomNew(); 
    CheckBoxList chkRoomList = (CheckBoxList)e.Item.FindControl("chkRoomList"); 
    CheckBox Checkbox1 = (CheckBox)e.Item.FindControl("Checkbox1"); 
    Label lblAreaName = (Label)e.Item.FindControl("lblAreaName"); 

    if (chkRoomList != null) 
    { 
     DataTable dt = objRoom.RoomListingByAreaId(Convert.ToInt64(DataBinder.Eval(e.Item.DataItem, "Areaid"))); 
     if (dt.Rows.Count > 0) 
     { 
      lblAreaName.Text = DataBinder.Eval(e.Item.DataItem, "Areaname").ToString(); 
      chkRoomList.DataSource = dt; 
      chkRoomList.DataTextField = "RoomName"; 
      chkRoomList.DataValueField = "RoomId"; 
      chkRoomList.DataBind(); 
     } 
     else 
     { 
      Checkbox1.Visible = false; 
      chkRoomList.Visible = false; 
     } 
    } 
} 

이 문서가 문제를 해결하는 것이 희망을 시도합니다.

1

chklstArea.ClientID는 "CheckBoxList"컨트롤의 클라이언트 ID를 제공합니다. 그리고 개별 체크 박스의 clientId를 얻으려면 다음 코드를 사용할 수 있습니다.

int index = 0; 
string checkBoxIDs = ""; //Comma Seperated IDs 
foreach (ListItem listItem in chklstArea.Items) 
{ 
    checkBoxIDs = chklstArea.ClientID + "_" + index + ","; 
    index++; 
} 
관련 문제