2012-01-09 23 views
6

tôi có hai hộp danh sách (listbox 1 và listbox2) .i đã sử dụng mã javscript sau để di chuyển giá trị từ một hộp danh sách sang khác.di chuyển giá trị từ một hộp danh sách sang sử dụng javascript khác và sau đó đọc giá trị bằng cách sử dụng C#

<script language="javascript" type="text/javascript"> 

function fnMoveItems(lstbxFrom,lstbxTo) 
{ 
var varFromBox = document.all(lstbxFrom); 
var varToBox = document.all(lstbxTo); 
if ((varFromBox != null) && (varToBox != null)) 
{ 
    if(varFromBox.length < 1) 
    { 
    alert('There are no items in the source ListBox'); 
    return false; 
    } 
    if(varFromBox.options.selectedIndex == -1) // when no Item is selected the index will be -1 

    { 
    alert('Please select an Item to move'); 
    return false; 
    } 
    while (varFromBox.options.selectedIndex >= 0) 
    { 
    var newOption = new Option(); // Create a new instance of ListItem 

    newOption.text = varFromBox.options[varFromBox.options.selectedIndex].text; 
    newOption.value = varFromBox.options[varFromBox.options.selectedIndex].value; 
    varToBox.options[varToBox.length] = newOption; //Append the item in Target Listbox 

    varFromBox.remove(varFromBox.options.selectedIndex); //Remove the item from Source Listbox 

    } 
} 
return false; 
} 
</script> 

Mã này chuyển giá trị từ một listbox khác, nhưng thực sự khi tôi cố gắng để đọc các giá trị listbox thứ hai, từ một đến whhich giá trị được sao chép, tôi không thể đọc những giá trị đó. khi tôi kiểm tra nó cho thấy ListBox2.Items.Count là 0

+8

Không chắc chắn nhưng, có trạng thái xem được kết hợp với điều khiển asp.net, vì bạn đang thêm các mục trên phía máy khách, nó có thể không phản ánh trên máy chủ. Bất cứ ai vui lòng sửa nếu tôi sai. –

+0

Có thể điều này có thể giúp: http://extendedlistbox.codeplex.com/. Nó thay thế trên bay một hộp danh sách html với hai danh sách thả xuống, với các nút để di chuyển giữa các twos. Từ phía máy chủ, thật dễ dàng để thao tác khi bạn làm việc với một hộp danh sách đơn giản với nhiều lựa chọn. ** Disclaimer ** Tôi là người tạo ra dự án –

+0

Đây là một cách để thực hiện: http://www.dotnet-developer.de/2008/07/aspnet2005/ajax/using-javascript-on-listboxes-in -aspnet / – keyboardP

Trả lời

4

Như Amar Palsapure đã nêu trong các nhận xét, thay đổi trên clientide với javascript không phản ánh trên phía máy chủ mà không có một số hack trên một phần của bạn (thêm các giá trị cho lĩnh vực ẩn, vv có một cái nhìn here), vì vậy bạn sẽ không thể để xem các thay đổi phía máy chủ. Tôi giả sử dòng ListBox2.Items.Count là phía máy chủ.

Sẽ tốt hơn và dễ dàng hơn cho bạn nếu bạn thực hiện yêu cầu ajax và thực hiện phía máy chủ trong bảng cập nhật.

0

Đảm bảo rằng khi tải trang, bạn sẽ không ghi đè các giá trị bằng cách đặt mã thiết lập hộp danh sách trong câu lệnh if đảm bảo nó không phải là postback.

0

Quy trình phía máy chủ (C) không thể đọc từ máy khách, mà không cần yêu cầu HTTP - tải lại trang (có thể không phải là những gì bạn muốn làm). Javascript của bạn có vẻ tốt, nhưng bạn có thể cần phải sử dụng kỹ thuật AJAX, cho phép mã máy khách của bạn nói chuyện với mã máy chủ của bạn mà không cần tải lại trang trong mô hình yêu cầu HTTP truyền thống.

Thử sử dụng thư viện JQuery để hỗ trợ thiết lập yêu cầu của bạn với máy chủ. http://api.jquery.com/jQuery.ajax/

0

Vì TBohnen.jnr đề nghị tôi khuyên bạn nên sử dụng Bảng điều khiển cập nhật và sau đó là Asynchrounous Postback Trigger để làm mới bảng cập nhật. Bạn sẽ cần phải đặt các hộp danh sách bên trong bảng điều khiển và sau đó có một sự kiện mà bạn tăng khi nội dung được di chuyển.

Các vấn đề liên quan