0

asp.net グリッドビューに「PlaceHolder」があり、そのプレースホルダーに複数選択のドロップダウンリストを追加したいと考えています。コードビハインドでは、「チェックボックス」を含む div を追加します。ユーザーがクリックすると、ドロップダウン div がチェックボックスで開かれます。しかし、javascript では、grid.getElementById を使用して div を取得できません。

チェックボックス付きのドロップダウンを作成する分離コードは次のとおりです。

DropDownList ddl = new DropDownList();
        ddl.ID = "ddlChkList";
        ListItem lstItem = new ListItem();
        ddl.Items.Insert(0, lstItem);
        ddl.Width = new Unit(155);
        ddl.Attributes.Add("onmousedown", "showdivonClick()");
        CheckBoxList chkBxLst = new CheckBoxList();
        chkBxLst.ID = "chkLstItem";
        chkBxLst.Attributes.Add("onmouseover", "showdiv()");

        //DataTable dtListItem = ListPrograms();

        //int rowNo = dtListItem.Rows.Count;
        int rowCount = programs.Count;
        string lstValue = string.Empty;
        string lstID = string.Empty;

        int i = 0;

        foreach (AlmsPrograms program in programs)
        {
            i++;
            lstValue = program.PROGRAMNAME;
            lstID = program.PROGRAMID.ToString();
            lstItem = new ListItem("<a href=\"javascript:void(0)\" id=\"alst\" style=\"text-decoration:none;color:Black; \" onclick=\"getSelectedItem(' " + lstValue + "','" + i + "','" + lstID + "','anchor');\">" + lstValue + "</a>", program.PROGRAMID.ToString());
            lstItem.Attributes.Add("onclick", "getSelectedItem('" + lstValue + "','" + i + "','" + lstID + "','listItem');");
            chkBxLst.Items.Add(lstItem);
        }

        System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
        div.ID = "divChkList";
        div.Controls.Add(chkBxLst);
        div.Style.Add("border", "black 1px solid");
        div.Style.Add("width", "250px");
        div.Style.Add("height", "180px");
        div.Style.Add("overflow", "AUTO");
        div.Style.Add("display", "none");
        phDDLCHK.Controls.Add(ddl);
        phDDLCHK.Controls.Add(div);

次に、aspx ファイルで、次のコードでその div を取得しようとします。

function showdivonClick() {
            var gridViewCtID = '<%=gvProgramSelection.ClientID %>';

            var grid = document.getElementById(gridViewCtID);
            var objDLL = document.getElementById(gridViewCtID + "_divChkList");
            //var objDLL = grid.getElementById('divChkList');
            if (objDLL.style.display == "block")
                objDLL.style.display = "none";
            else
                objDLL.style.display = "block";
        }

ただし、グリッドは「divChkList」の前に「ctl01」、「ctl02」も追加します。これらの動的に作成された名前を取得するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

0

ClientIDModeをStaticに設定します。これは、IDをいじくり回しません(ただし、名前をいじくり回します)。または、別のすばやく簡単な方法は、クラスをdivに追加し、代わりにjQueryのセレクターとして使用することです。

于 2013-01-22T15:47:28.177 に答える