2012-04-27 40 views
11

đánh dấu:Asp.NET DropDownList SelectedItem.Value không thay đổi

  <div style="float:left;margin-top:15px;width:80px"> 
       <asp:DropDownList ID="MyList" runat="server" Width="100px"></asp:DropDownList> 
      </div> 

mã:

 // clear vehicles list 
     MyList.Items.Clear(); 

     // add 'all' option 
     MyList.Items.Add(new ListItem("ALL", "0")); 

     // add assets 
     foreach (CustomClass item in items) 
      MyList.Items.Add(new ListItem(item.Name, item.ID.ToString())); 

Không có sự kiện kích hoạt cho SelectedIndexChanged vì nó không cần thiết.

Khi tôi nhấp vào nút để đăng lại, giá trị của selecteditem vẫn là giá trị của mục đầu tiên trong DropDownList. Tôi đang thiếu gì?

LƯU Ý Vui lòng ngừng trả lời và chỉnh sửa bài đăng. Chúng tôi có thể để nó vì nó đã được trả lời rồi.

Trả lời

31

Nếu bạn đang databinding trong Page_Load, bạn về cơ bản cũng đặt lại SelectedItem.

Bạn nên bọc bất kỳ mã ràng buộc nào tồn tại trong Page_Load bên trong khối if(!IsPostBack).

if(!Page.IsPostBack) 
{ 

    // Your binding code here ... 

} 
+3

. tôi không nhận ra điều đó. thanks – Bahamut

4

Mã của bạn có thể đang thực thi sau khi đăng lại, xóa hộp, do đó mất lựa chọn và tất cả.

Nếu vậy, hãy thử gói mã trong một cái gì đó như if(!Page.IsPostBack) { ... }.

-2

Có bạn đang thiếu để thêm danh sách thả xuống AutoPostBack = true ..

Hãy thử với sau trong trang .aspx

+0

Điều này sẽ buộc đăng lại mỗi lần một mục được chọn ... –

-1

để chỉ mục đầu tiên thêm tất cả không bắt buộc phải thêm. bạn cần chèn số chỉ mục cụ thể

MyList.Items.Insert(0, "ALL"); 
+1

Câu trả lời này sẽ không tạo ra bất kỳ sự khác biệt nào vì nó chỉ thêm một mục. Câu hỏi đã được trả lời rồi, cảm ơn bạn. – Bahamut

0

Vì vậy, câu trả lời này là giải pháp "rõ ràng" cho nguyên nhân phổ biến nhất. Tuy nhiên, có một vấn đề đáng ngạc nhiên hơn có thể gây ra điều này! Giá trị danh sách của tôi đến từ một cơ sở dữ liệu và các giá trị có dòng trả về và vận chuyển trở lại: "\ r \ n". Những giá trị này trông giống như một không gian vô tội, nhưng thực ra chúng không phải! Giải pháp của tôi là xóa các giá trị Char ẩn này. Hy vọng nó giúp.

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