我在asp.net gridview中有“PlaceHolder”,并且在该占位符中我想添加具有多个选择的下拉列表。在codebehind中我添加一个div来包含“Checkboxes”,所以当用户点击下拉列表时,将打开带有复选框的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”。我怎样才能获得这些动态创建的名称?
感谢。
答案 0 :(得分:0)
将ClientIDMode设置为静态,它不会与您的ID混淆(但仍会使用该名称),或者另一种快速简便的方法是将一个类添加到div并将其用作jQuery中的选择器代替。