2011-07-25 48 views
2

我有兩個列表框。一個填充在Page_Load中,另一個保持空白。 用戶具有用於將用戶從第一個列表添加到第二個列表並返回的按鈕。 提交表單時,第二個列表是空的,就像它發送給客戶端時一樣。這裏是JS代碼:asp.net - 客戶端控制更改未見服務器端

function add() { 
     $('#AvailableUsers option:selected').appendTo('#SelectedUsers'); 
    } 

    function addall() { 
     $('#AvailableUsers option').appendTo('#SelectedUsers'); 
    } 

    function remove() { 
     $('#SelectedUsers option:selected').appendTo('#AvailableUsers'); 
    } 

    function removeall() { 
     $('#SelectedUsers option').appendTo('#AvailableUsers'); 
    } 

如何將客戶端更改返回到服務器端?

編輯:代碼服務器端:

bool canDismiss = chkCanDismiss.Checked; 
     string messageText = tbMessageText.Text; 
     PaymentsDataContext db = new PaymentsDataContext(); 
     foreach (ListItem li in SelectedUsers.Items) 
     { 
      UserMessages newMessage = new UserMessages(); 
      newMessage.userName = li.Text; 
      newMessage.messageText = messageText; 
      newMessage.dismissed = false; 
      newMessage.canDismiss = canDismiss; 
      db.UserMessages.InsertOnSubmit(newMessage); 
     } 
     db.SubmitChanges(); 
+0

您可以瞭解更多有關這對 http://stackoverflow.com/questions/3477337/listbox-and-jquery –

+0

使用AJAX來告訴新狀態的服務器(不回發) – Raynos

+0

@Raynos - 我在哪裏存儲服務器端的值,如果我通過ajax將它們發回服務器? –

回答

3

你必須要追加/存儲在hidden field這些項目爲好,那麼你就可以得到在服務器端的隱藏字段中的項目。

這是因爲您在客戶端進行的更改在服務器端不可用。

+0

這是最簡單的解決方案。謝謝! –

1

如果我正確讀取,您正在嘗試使用「所選用戶」服務器端的用戶。我將有一個表單提交客戶端事件,用於選擇SelectedUsers列表中的所有用戶。這消除了對隱藏變量的需求。 注意使用結合下面與您現有的jQuery

$(document).ready(function(){ 
    $(form).submit(function(){ 
     $('#SelectedUsers option').attr("selected","selected");  
     return true; 
    }); 
}); 

編輯迴應評論:當選擇的用戶控制最初加載頁面上沒有選擇的項目並沒有什麼。使用您當前的代碼,選項將添加到客戶端的選定用戶列表中。當前當表單被提交時,這些值不被選擇,因此不會被髮回服務器。要將值發回服務器,需要先選擇它們。上面的代碼應該做的是在SelectedUsers列表中選擇用戶選項,並在提交表單時將所選值與表單的其餘部分一起發送回服務器。

編輯2,服務器端代碼:您可能需要通過Request.Form對象訪問這些值。使用多個控件(如多個選擇框)時,多個值將作爲逗號分隔的字符串傳遞。

string rawSelUsers = Request.Form[SelectedUsers.ClientID]; 

如果需要,您可以對此字符串執行拆分以將其拆分爲數組。

+0

對不起,我不明白。這應該怎麼做? –

+0

這對我不起作用。 –

+0

我已經添加了提交函數的返回以確保表單提交。你能提供更多關於這不起作用的信息嗎?表單提交後,您如何訪問此控件的選定值? –