页面上有CheckBoxList
。页面上的所有控件都在UpdatePanel
。
<asp:CheckBoxList ID="AreaCheckBoxList" Width="300px" runat="server" onchange="RemoveItems()" RepeatDirection="Horizontal">
<asp:ListItem Value="" style="display: none"></asp:ListItem>
</asp:CheckBoxList>
使用javascript点击锚标记时为其添加项目。
<a class="button" onclick="addToCheckBoxListControl()" />
function addToCheckBoxListControl() {
var tableRef = document.getElementById('<%= AreaCheckBoxList.ClientID %>');
var list = document.getElementById('<%= AreaDropDownList.ClientID %>');
var valueValue = list.options[list.selectedIndex].value;
var textvalue = list.options[list.selectedIndex].text;
if (!isValueAlreadyExist(tableRef, valueValue)) {
var rowArray = tableRef.getElementsByTagName('tr');
var rowCount = rowArray.length;
var rowElement = tableRef.insertRow(rowCount);
var columnElement = rowElement.insertCell(0);
var checkBoxRef = document.createElement('input');
var labelRef = document.createElement('label');
checkBoxRef.type = 'checkbox';
checkBoxRef.value = valueValue;
labelRef.innerHTML = textvalue;
columnElement.appendChild(checkBoxRef);
columnElement.appendChild(labelRef);
}
}
我在页面上有一个按钮,CheckBoxList
控制在点击按钮后丢失所有项目(使用javascript添加的项目)。
AreaCheckBoxList.Items.Count -----> =1
答案 0 :(得分:0)
似乎您正在从后面的代码中将数据绑定到CheckBoxList
,并且您在数据绑定之前检查IsPostBack
。因此,您的数据仅适用于直接页面加载,不适用于回发。
修改强> 的
似乎你的问题是在回发后JavaScript代码没有执行。您可以在updatepanel完成请求时注册JavaScript函数。尝试使用此代码在updatepanel完成请求后调用您的JavaScript函数。
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(addToCheckBoxListControl)
http://msdn.microsoft.com/en-us/library/bb397523(v=vs.100).aspx
页面上的所有内容都会引发pageLoaded事件 刷新,是否由于同步而刷新 (整页)回发或异步回发。你可以用它 事件为更新的内容提供自定义过渡效果。
的 UPDATE2 强> 的
你只问了部分问题。看来真正的问题是,您是使用JavaScript向CheckBoxList
添加项目,并希望在后面的代码中访问它。这不可能。如果您在JavaScript中修改了CheckBoxList
,它将不会在服务器端保留,并在PostBack发生后消失。
所以我对这种情况的建议是,用asp.net链接按钮替换你的<a>
标签,它会在你点击时进行回发。在该click事件上,您可以在服务器端添加该元素。所以它将为您提供服务器端和客户端。