2009-04-27 17 views
8

Tôi muốn tự động tạo biểu mẫu từ cơ sở dữ liệu trong ASP.NET, cách tiếp cận tốt nhất là gì? Có bất kỳ chức năng tích hợp nào mà tôi có thể sử dụng không?Tạo mẫu động trong ASP.NET

Tôi sẽ có các bảng cơ sở dữ liệu để đại diện cho các bảng và tên của chúng, sau đó cho mỗi bảng, nó chứa các trường khác nhau và loại của chúng (Combos, Textbox, vv ..).

Xin lời khuyên, cảm ơn bạn.

Lưu ý: Tôi phải sử dụng điều khiển Telerik Ajax cho thế hệ hình thức

Trả lời

15

Có một cái nhìn tại Dynamic Data.

Gần đây tôi đã tìm hiểu về nó và nó đã tiết kiệm cho tôi thời gian.

Cập nhật:

Xin lỗi - đã đọc lại câu hỏi, tôi không nghĩ rằng đây là những gì bạn đang theo đuổi.

Nếu bạn muốn tự động tạo biểu mẫu dựa trên các bản ghi trong cơ sở dữ liệu của mình, bạn có thể phải viết công cụ của riêng bạn.

Một vài gợi ý mặc dù:

  • Tôi muốn nhìn vào sử dụng phản ánh để tải điều khiển chứ không phải là báo cáo trường hợp lớn. Bằng cách đó, bạn có thể tự động thêm các loại điều khiển khác nhau chỉ bằng cách bao gồm lắp ráp mới. Bạn sẽ không phải viết mã mới.
  • Đảm bảo bạn bao gồm cách kiểm soát thứ tự hiển thị trong cơ sở dữ liệu của mình. Tôi lưu ý rằng bạn muốn sử dụng một bảng khác nhau cho mỗi bảng điều khiển. Tôi khuyên bạn nên chống lại điều đó vì vấn đề trật tự hiển thị. Nếu bạn có một bảng có danh sách các bảng và một bảng có danh sách các mục dữ liệu + tham chiếu khóa ngoài tới các bảng, bạn sẽ có thể sắp xếp chúng theo cách có thể dự đoán và có thể điều khiển được trên trang.

Cập nhật: thông tin thêm về phản ánh

một cách đơn giản, phản ánh là khi bạn tìm hiểu về các chi tiết của một assembly khi chạy. Trong trường hợp này, tôi đề nghị sử dụng sự phản chiếu để tải một điều khiển dựa trên thông tin trong cơ sở dữ liệu của bạn.

Vì vậy, nếu bạn đã có một kỷ lục trong cơ sở dữ liệu của bạn tương tự như sau:

FieldName DataType   DisplayControl      DisplayProperty 
---------------------------------------------------------------------------------- 
FirstName System.String System.Web.UI.WebControls.TextBox Text 

Bạn có thể sử dụng một số mã như sau để tạo ra sự kiểm soát trên trang (lưu ý rằng nó chưa được kiểm tra):

// after getting the "PageItem" database records into a "pageItems" array 
foreach (PageItem p in pageItems) 
{ 
    // get the type and properties 
    Type controlType = System.Type.GetType(p.DisplayControl) 
    PropertyInfo[] controlPropertiesArray = controlType.GetProperties(); 

    // create the object 
    object control = Activator.CreateInstance(controlType); 

    // look for matching property 
    foreach (PropertyInfo controlProperty in controlPropertiesArray) 
    { 
     if (controlPropertiesArray.Name == p.DisplayProperty) 
     { 
      // set the Control's property 
      controlProperty.SetValue(control, "data for this item", null); 
     } 
    } 

    // then generate the control on the page using LoadControl (sorry, lacking time to look that up) 

Có một trang thực sự tốt phác thảo cách thực hiện điều này here. Nó có vẻ là khá nhiều những gì bạn đang sau.

+0

Tôi không quen thuộc với sự phản ánh, bạn có thể mở rộng theo ý bạn? Tốt hơn với một ví dụ đơn giản? – Joshscorp

+0

Chắc chắn, tôi sẽ cập nhật câu trả lời của tôi – Damovisa

+0

Cảm ơn, điều đó cho tôi một số khởi đầu, bạn có nghĩ rằng tôi sẽ có thể sử dụng các điều khiển Telerik với Activator.CreateInstance đó không? – Joshscorp

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