用DataBinder绑定索引器
nhibernate的Session.Find方法返回的可能是一个对象数组的集合, 例如Find("Select customer.Id, customer.Name From Customer customer") , 它返回的是由object[2]组成的ArrayList. 不知怎么绑定到DataGrid好, 后来发现DataBinder.Eval可以用"[xxx]"的表达式去访问索引器. 所以
<%#DataBinder.Eval(Container.DataItem, "[0]")%>
<%#DataBinder.Eval(Container.DataItem, "[1]")%>
就分别可以得到Customer的Id和Name了
常见绑定格式,不过他们的性能有区别。
<%# DataBinder.Eval(Container.DataItem, "[n]") %>
<%# DataBinder.Eval(Container.DataItem, "ColumnName") %>
<%# DataBinder.Eval(Container.DataItem, "ColumnName", null) %>
<%# DataBinder.Eval(Container, "DataItem.ColumnName", null) %>
<%# ((DataRowView)Container.DataItem)["ColumnName"] %>
<%# ((DataRowView)Container.DataItem).Row["ColumnName"] %>
<%# ((DataRowView)Container.DataItem)["adtitle"] %>
<%# ((DataRowView)Container.DataItem)[n] %>
<%# ((DbDataRecord)Container.DataItem)[0] %>
<%# (((自定义类型)Container.DataItem)).属性.ToString() %>(如果属性为字符串类型就不用ToString()了)
上面这三个性能最好。
<%#DataBinder.Eval(Container.DataItem, "[0]")%>
<%#DataBinder.Eval(Container.DataItem, "[1]")%>
就分别可以得到Customer的Id和Name了
常见绑定格式,不过他们的性能有区别。
<%# DataBinder.Eval(Container.DataItem, "[n]") %>
<%# DataBinder.Eval(Container.DataItem, "ColumnName") %>
<%# DataBinder.Eval(Container.DataItem, "ColumnName", null) %>
<%# DataBinder.Eval(Container, "DataItem.ColumnName", null) %>
<%# ((DataRowView)Container.DataItem)["ColumnName"] %>
<%# ((DataRowView)Container.DataItem).Row["ColumnName"] %>
<%# ((DataRowView)Container.DataItem)["adtitle"] %>
<%# ((DataRowView)Container.DataItem)[n] %>
<%# ((DbDataRecord)Container.DataItem)[0] %>
<%# (((自定义类型)Container.DataItem)).属性.ToString() %>(如果属性为字符串类型就不用ToString()了)
上面这三个性能最好。