Tôi đang làm việc trên một dự án Web Forms tải kết quả truy vấn Sql vào DataTable s.Binding động để tùy chỉnh đối tượng kinh doanh tại thời gian chạy
Những DataTable s này được chuyển lên đầu phía trước, nơi chúng tôi liên kết chúng với điều khiển trang web Repeater.
Công trình này tuyệt vời. Tuy nhiên, bây giờ chúng tôi muốn liên kết với các lớp tùy chỉnh của riêng chúng tôi thay vì một số DataTable
. Thật không may, những gì tôi nghĩ là câu trả lời rõ ràng đã không hoạt động (thực hiện IDictionary<string, object>
trên lớp của chúng tôi).
Chúng ta cần gì để có Eval gắn kết với Datum mà không tạo thuộc tính cụ thể cho mọi ràng buộc? Rõ ràng DataRow không phải thực hiện cụ thể mọi thuộc tính mà chúng ta ràng buộc. Vì vậy, bằng cách nào đó có vẻ như là Eval có thể tra cứu các giá trị thuộc tính theo tên trên DataRow.
Đây là lớp tùy chỉnh
public class Datum: IDictionary<string, object>
{
private Dictionary<string, object> _entries;
public Datum()
{
_entries = new Dictionary<string, object>();
}
public object this[string s]
{
get
{
return this._entries[s];
}
}
...
}
Đây là nơi DataSource được thiết lập trong aspx.cs nộp
rptTags.DataSource = new[] { new Datum { {"Count", 1} }, new Datum { {"Count", 2 } };
Và đây là các ràng buộc trong file aspx
<asp:Repeater ID="rptTags" runat="server">
<ItemTemplate>
<%# (int)Eval("Count") >
</ItemTemplate>
</asp:Repeater>
Sử dụng ví dụ trên, chúng tôi nhận được thông báo lỗi rằng thuộc tính được đề cập không tồn tại, điều này đúng, nhưng d cũng không tồn tại trên DataRow. Làm thế nào tôi có thể làm cho nó liên kết như System.Data.DataRow?
bạn có thể chia sẻ bạn lớp mô hình dữ liệu và biểu thức eval, mà có thể giúp bạn dễ dàng hơn. –
"Điều này làm cho nó là một cơn ác mộng để thử và kiểm tra bất cứ điều gì." Ví dụ? –
@mark Ok Tôi nghĩ mình nhận được ... – Aristos