【问题标题】:CheckBoxList control losing all items after post backCheckBoxList 控件在回发后丢失所有项目
【发布时间】:2013-05-11 13:56:43
【问题描述】:

我在页面上有一个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

【问题讨论】:

  • 你有没有做过这方面的研究?
  • 也显示你的javascript代码!
  • onchange="RemoveItems()" 什么都没做?
  • @ChrisBuckler : 选中项目时删除项目。

标签: javascript asp.net list checkbox webforms


【解决方案1】:

似乎您正在从后面的代码将数据绑定到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 事件在页面上的所有内容被触发后引发 refreshed,是否因为同步而被刷新 (整页)回发或异步回发。你可以用这个 事件为更新的内容提供自定义过渡效果。

UPDATE2


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

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

【讨论】:

  • 谢谢,不,我使用 javascript 将项目添加到复选框列表。
  • @ar.gorgin:查看更新后的答案。它将帮助您解决问题。
  • 谢谢,但是当点击锚标签&lt;a class="button" onclick="addToCheckBoxListControl()" /&gt;时,我在复选框列表中添加了项目
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多