2013-05-11 90 views
1

我在页面上有一个CheckBoxList。页面上的所有控件都在UpdatePanelCheckBoxList控件在回发后丢失所有项目

<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

你有没有做过这方面的研究呢? – Popo 2013-05-11 13:59:54

+0

也显示您的JavaScript代码! – 2013-05-11 14:09:44

+0

onchange =“RemoveItems()”没有做任何事情? – clamchoda 2013-05-12 04:30:43

回答

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,则它不会持久服务器端,并在发生回发后消失。

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

+0

谢谢,不,我用javascript添加项目复选框列表。 – 2013-05-11 18:18:05

+0

@ ar.gorgin:查看更新的答案。它会帮助你解决你的问题。 – 2013-05-11 18:28:46

+0

谢谢,但我在复选框列表中添加项目时,点击锚标签'' – 2013-05-12 03:55:18