2010-06-03 18 views
5

Đây có thể là một cái gì đó thực sự ngu ngốc ..Danh sách thả xuống được liên kết với nguồn dữ liệu đối tượng - cách cập nhật trên một nút bấm

Tôi có danh sách thả xuống được liên kết với nguồn dữ liệu đối tượng. Tôi đã đặt AppendDataBoundItems thành true để tôi có thể có một lựa chọn ban đầu.

<asp:DropDownList ID="Accommodations1" runat="server" AutoPostBack="true" DataTextField="AccommodationTypeDescription" DataValueField="Id" OnDataBound="Accommodations1_DataBound" onSelectedIndexChanged="Accommodations1_SelectedIndexChanged" Width="200px" DataSourceID="AccommodationDs" AppendDataBoundItems="true"> 
     <asp:ListItem Text="Select" Value=""></asp:ListItem> 
</asp:DropDownList> 

<asp:ObjectDataSource ID="AccommodationDs" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="ListByPropertyId" TypeName="PropertyAccommodationController"> 
     <SelectParameters> 
      <asp:Parameter Name="PropertyId" Type="Int32" /> 
     </SelectParameters> 
</asp:ObjectDataSource> 

Tôi có nút thêm sức chứa - vì vậy sau đó tôi cần danh sách thả xuống để cập nhật để bao gồm chỗ ở mới. Vì vậy, tôi đã cố gắng gọi databind trên danh sách thả xuống, và databind trên nguồn dữ liệu - và không có gì là làm cho danh sách thả xuống này cập nhật.

ví dụ: PropertyAccommodations1.DataBind();

Ai đó có thể vui lòng cho tôi biết tôi đang làm gì sai. Ban đầu tôi nghĩ rằng đó là do một vấn đề bảng cập nhật .. nhưng tôi đã gỡ bỏ bảng cập nhật và nó vẫn không hoạt động (và kiểm tra trang chủ không bao gồm một bảng cập nhật).

Cảm ơn !!

+0

Tôi đã xóa ràng buộc dữ liệu cuộc gọi và dữ liệu cuộc gọi AppendDataItems trong danh sách thả xuống và cập nhật như mong đợi. Làm cách nào để có danh sách thả xuống có giá trị mặc định "Chọn" - mà không gặp phải vấn đề này? – Jen

Trả lời

1

Cảm ơn bạn đã phản hồi nhanh - đã triển khai

Accommodations1.Items.Insert(0,new ListItem("Select","")); 

như tôi đặc biệt muốn ở trên cùng :)

Tôi vẫn nghĩ rằng nó sẽ được neater để có mặt hàng mặc định này trong nguồn của trang - nhưng mà AppendDataItems là vấp ngã tôi lên.

+0

Cần phải Chèn không Thêm – Colin

+0

@alejandrobog: Tôi không đồng ý với tuyên bố của bạn. Jen đã thêm một dòng mã khác và sửa đổi nó thành câu trả lời đúng. – fuzz

1

Bạn có thể subrcibe để DDL OnDataBound và thêm "Chọn" mục

Accommodations1.Items.Add(new ListItem("Select","")); 
+0

Cảm ơn! Tôi nghĩ đây sẽ là cách tôi đi - nhưng tôi muốn có mục mặc định trong nguồn của trang, và sau đó chỉ cần nối thêm các mục - dường như là một cách làm tốt :) – Jen

+0

Có thể có vấn đề nếu bạn đặt AppendDataBoundItems = "true", ví dụ nếu gọi databind một lần nữa các mục của bạn sẽ được nhân đôi. – alejandrobog

1

Trong nút nhấp chuột, sau khi bạn gọi .DataBind() trên DDL, sau đó bạn có thể làm

Accommodations1.Items.Add(new ListItem("Select")); 
+0

Tôi đã hy vọng tránh phải làm điều đó trong mã - nhưng cảm ơn :) Nếu tôi phải làm điều đó trong mã, tôi cũng sẽ cần phải thêm nó sau khi ràng buộc ban đầu - nơi tốt nhất để làm điều này. tức là. hiện tại trên trang tải tôi thiết lập này: AccommodationDs.SelectParameters ["propertyId"]. DefaultValue = ((int) Master.PropertyId). ToString(); Nguồn dữ liệu mà danh sách thả xuống bị ràng buộc là gì. Tôi không cụ thể gọi databind trên danh sách thả xuống khi trang đang tải - vì vậy tôi sẽ đặt phần bổ sung ở đâu? Hoặc tôi có nên gọi databind danh sách thả xuống sau khi thiết lập tham số chọn của nguồn dữ liệu? – Jen

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