后台动态添加控件后,脚本得不到控件的ID的解决方法
后台动态添加控件后,脚本无法得到此控件的ID,需要通过以上方法获取
后台代码:
public void BindNotMainCateGory()
{
DataSet ds = LifeExpress.Components.POICategory.GetChildCategoryDataSet(0);
NotNotMainCateGoryIDList.Text = "";//输入框置空
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
CheckBox wps = new CheckBox();
wps.ID = "chk" + ds.Tables[0].Rows[i]["id"].ToString();
wps.ToolTip = ds.Tables[0].Rows[i]["id"].ToString();
wps.Text = ds.Tables[0].Rows[i]["DisplayName"].ToString();
panelNotMainCateGory.Controls.Add(wps); //panelNotMainCateGory是panel控件
CheckBoxList chklist = new CheckBoxList();
chklist.RepeatDirection = RepeatDirection.Horizontal;
chklist.ID = wps.ToolTip;
chklist.RepeatColumns = 4;
DataSet ds1 = LifeExpress.Components.POICategory.GetChildCategoryDataSet(Convert.ToInt32(wps.ToolTip.Trim()));
if (ds1.Tables[0].Rows.Count > 0)
{
chklist.DataSource = ds1;
chklist.DataTextField = "DisplayName";
chklist.DataValueField = "id";
chklist.DataBind();
if (!PanelNotMainChildCateGory.Controls.Contains(chklist))
{
PanelNotMainChildCateGory.Controls.Add(chklist);//PanelNotMainChildCateGory是panel控件
}
}
//通过鼠标移动到控件wps上,显示相应chklist控件,隐藏其它的checkboxlist控件
wps.Attributes.Add("onMouseOver", "OnMouseUpNotMainCateGory(" + chklist.ClientID + ")");
NotNotMainCateGoryIDList.Text = NotNotMainCateGoryIDList.Text + chklist.ClientID + ",";
if (i == 0)
{
wps.Checked = true;
//chklist.Visible = true;
chklist.Style.Add("display", "block");//此否要用style控件显示与隐藏,不用vislble.
}
else
{
//chklist.Visible = false;
chklist.Style.Add("display", "none");
}
}
if (NotNotMainCateGoryIDList.Text.Length > 0)
{
NotNotMainCateGoryIDList.Text = NotNotMainCateGoryIDList.Text.Substring(0, NotNotMainCateGoryIDList.Text.Length - 1);
}
}
前台代码
<script>
function OnMouseUpNotMainCateGory(id)
{
//id.style.display="block";需要显示的控件
//NotNotMainCateGoryIDList是一个文件框,存放ID列表。 NotNotMainCateGoryIDList是拖拉出来的控件,可以通过document.getElementById('<%=NotNotMainCateGoryIDList.ClientID %>');得到控件
var IDList=document.getElementById('<%=NotNotMainCateGoryIDList.ClientID %>');
aArr=IDList.value.split(',');
for(i=0;i<aArr.length;i++)
{
if(document.getElementById(aArr[i])!=id)
{
document.getElementById(aArr[i]).style.display="none";
}
else
{
document.getElementById(aArr[i]).style.display="block";
}
}
}
</script>