CheckBoxList控件在回发后丢失所有项目

时间:2013-05-11 13:56:43

标签: javascript asp.net list checkbox webforms

页面上有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

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事件上,您可以在服务器端添加该元素。所以它将为您提供服务器端和客户端。