1

ネストされたデータリスト構造があり、すべてのカテゴリにすべてのチェックボックスを選択したいと考えています。

一番上のチェックボックスは正常に機能しますが、メインカテゴリごとにそれを行う方法がわかりません

ここに画像の説明を入力

これはうまくいきます:

 protected void cbTamaminiSec_CheckedChanged(object sender, EventArgs e)
{
    CheckBox cbTemp;

    foreach (DataListItem ItemP in parentDataList.Items)
    {
        cbTemp = (CheckBox)parentDataList.Items[ItemP.ItemIndex].FindControl("cbTumunuSec");
        cbTemp.Checked = cbTamaminiSec.Checked;

        DataList nestedDataList = (DataList)parentDataList.Items[ItemP.ItemIndex].FindControl("nestedDataList");

        foreach (DataListItem Item in nestedDataList.Items)
        {
            cbTemp = (CheckBox)nestedDataList.Items[Item.ItemIndex].FindControl("cbTamam");

            cbTemp.Checked = cbTamaminiSec.Checked;
        }
    }
}

しかし、部分選択についてはわかりません(parentdatalistのチェックボックスのコードの下)問題を強調するために、選択したIDを「0」にしました

  protected void cbTumunuSec_CheckedChanged(Object sender, EventArgs e)
    {
        int selected = 0;//= (int)parentDataList.SelectedItem.ToString(); // problem is here..

        DataList nestedDataList = (DataList)parentDataList.Items[selected].FindControl("nestedDataList");

        foreach (DataListItem Item in nestedDataList.Items)
        {
            CheckBox cbTemp = (CheckBox)nestedDataList.Items[Item.ItemIndex].FindControl("cbTamam");

            cbTemp.Checked = true;

        }
    }

解決策は何ですか

4

2 に答える 2

1

このコードで試すことができます-に基づいてOfType LINQ OperatorControls propery

var allControls = nestedDataList.Items[index].Controls.OfType<CheckBox>();

....//Filter with `Where Operator`

リンク: http://msdn.microsoft.com/fr-fr/library/system.web.ui.control.controls(v=vs.80).aspx

于 2012-09-20T13:36:31.523 に答える
0

問題が解決しました!aspコード:

<asp:HiddenField ID="hiddenBaslikId" runat="server" Value='<%# Eval("baslikId") %>' />

背後にあるコード:

protected void cbTumunuSec_CheckedChanged(Object sender, EventArgs e)
    {
    CheckBox checkAll = (CheckBox)sender;
    DataListItem item = (DataListItem)checkAll.NamingContainer;
    HiddenField HiddenID = (HiddenField)item.FindControl("hiddenBaslikId");

    int selected = Convert.ToInt32(HiddenID.Value)-1;

        DataList nestedDataList = (DataList)parentDataList.Items[selected].FindControl("nestedDataList");

        foreach (DataListItem Item in nestedDataList.Items)
        {
            CheckBox cbTemp = (CheckBox)nestedDataList.Items[Item.ItemIndex].FindControl("cbTamam");

            cbTemp.Checked = true;

        }
    }
于 2012-09-21T07:14:18.163 に答える