0

を持っていて、そのイベントでその中の各アイテムCheckBoxListを取得する必要がありますが、取得方法がわかりません。助けてください。idDataBound

これが私のコードです:

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のIDにバインドしたいと考えています。

4

2 に答える 2

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++;
}
于 2012-11-01T10:01:56.437 に答える
0

あなたの要件と私の理解によると、リピーターまたはチェックボックスリストを含むその他のデータバインドコントロールを使用する必要があります。以下のように:

HTML コードは次のとおりです。

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

コードビハインドは次のとおりです。

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

これを試してください。これで問題が解決することを願っています。

于 2012-11-01T10:59:56.190 に答える