2013-05-11 27 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