2010-11-18 20 views
27

Tôi có một tập dữ liệu mà tôi đang ràng buộc vào một hộp danh sách. Tuy nhiên, tôi muốn kết hợp hai trường để tạo nên DataTextField. Điều này có thể, hoặc tôi sẽ phải lặp qua các dòng dữ liệu?Kết hợp hai trường trong một DataTextField. Điều này có thể không?

lstAddressDropdown.DataSource = dsAddress; 
lstAddressDropdown.DataTextField = "StreetAddress" + "Place"; 
lstAddressDropdown.DataBind(); 
lstAddressDropdown.Items.Insert(0, new ListItem("Please select")); 

Cần lưu ý rằng tập dữ liệu quay lại từ dịch vụ web nên tôi không thể thay đổi bất kỳ thủ tục được lưu trữ nào để kết hợp các cột ở đó.

+0

Bạn không thể lấy dữ liệu trong một trường từ nguồn dữ liệu của mình? –

Trả lời

39

Bạn có thể thêm một cột bổ sung vào cột dữ liệu được tính toán và sử dụng cột đó làm datatextfield (docs: Multi-field Data Binding).

Vì vậy, ví dụ bạn ở trên bạn có thể làm một cái gì đó như thế này:

dsAddress.Tables[0].Columns.Add("StreetAndPlace",typeof(string),"StreetAddress + Place"); 
lstAddressDropdown.DataSource = dsAddress; 
lstAddressDropdown.DataTextField = "StreetAndPlace"; 
lstAddressDropdown.DataBind(); 
lstAddressDropdown.Items.Insert(0, new ListItem("Please select")); 

Để thêm một khoảng trống giữa StreetAddress và Place thay thế các chuỗi biểu trình bày ở trên với "StreetAddress + ' ' + Place"

+0

Tôi sẽ cung cấp cho một đi, nhờ –

+1

Nó làm tôi ngạc nhiên rằng bài viết liên kết dữ liệu đa lĩnh vực, được viết vào năm 2002, vẫn còn hữu ích ngày hôm nay ... –

2

Sửa đổi truy vấn của bạn theo của bạn yêu cầu trong Oracle

SELECT 
'<B>'||SHORTNAME||'</B><br/>('||DEPARTMENT||')' AS USERNAME 
FROM TABLE 

Trong truy vấn ở trên Tên sẽ hiển thị bằng chữ in đậm và bên dưới bộ phận sẽ hiển thị như:

<b>Mr. Jagdeep Mankotia</b><br> 
(Web Application Development) 
-1

Bạn không bao giờ cần phải viết vòng lặp nữa với LINQ.

  • Tạo lớp để trả về hai trường của bạn.

    lớp học công cộng một phần EmployeeDropdownInfo { công khai int person_id {get; bộ; } chuỗi công cộng employee_name {get; bộ; } }

  • Lấy dữ liệu của bạn và sử dụng LINQ để lọc và trả về những gì bạn cần.

    Danh sách requestors = (từ t trong dc.sp_GetEmployees() chọn EmployeeDropdownInfo mới() { Person_Id = t.person_id, Employee_name = t.first_name + "" + t.last_name }). ToList ();

    EmployeeDropdownInfo firstEntry2 = new EmployeeDropdownInfo() {person_id = 0, employee_name = "- Chọn một nhân viên -"}; requestors.Insert (0, firstEntry2); ddlRequestor.DataSource = người yêu cầu; ddlRequestor.DataTextField = "employee_name"; ddlRequestor.DataValueField = "person_id"; ddlRequestor.DataBind();

Bằng cách này bạn không phải thay đổi proc và menu thả xuống chỉ cần hai giá trị hầu hết thời gian.

+0

Tôi đã không sử dụng LINQ để làm điều này (trở lại trong ngày) . Phải được thực hiện bằng Datasets –

0

Tôi biết điều này đã được trả lời nhưng tôi nghĩ rằng có một cách dễ dàng hơn để giải quyết vấn đề này.

Sửa đổi lệnh chọn của bạn và kết hợp 2 DataTextField bạn muốn hiển thị.

DataSource.SelectCommand = "Select (Column1 || ' ' || Column2) As Column1And2 From Table"; 

RadioButtonList1.DataTextField = "Column1And2"; 

Hy vọng điều này sẽ giúp ích, Có thể đó không phải là cách tốt nhất nhưng tôi nghĩ dễ hiểu hơn nhiều.

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