1

我有一个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
4

1 回答 1

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 事件在页面上的所有内容刷新后引发,无论是由于同步(整页)回发还是异步回发而刷新。您可以使用此事件为更新的内容提供自定义过渡效果。

更新2


你只问了部分问题。似乎真正的问题是,您正在CheckBoxList使用 JavaScript 添加项目并希望在后面的代码中访问它。这不可能。如果您CheckBoxList在 JavaScript 中修改了 ,它不会在服务器端持续存在,并且会在 PostBack 发生后消失。

所以我对这种情况的建议是,<a>用 asp.net 链接按钮替换你的标签,当你点击它时它会做一个回发。在该单击事件上,您可以在服务器端添加元素。因此它将为您提供服务器端和客户端。

于 2013-05-11T14:11:29.773 回答