Hao*_*est 4 asp.net data-binding
我在aspx页面中遇到类似的代码:
<asp:CheckBox Runat="server" ID="myid" Checked='<%# DataBinder.Eval(Container.DataItem, "column").Equals(1) %>'>
Run Code Online (Sandbox Code Playgroud)
我想知道我在<%#%>标签内有哪些其他对象可以访问.为什么DataBinder.Eval()和Container.DataItem在.CS代码中的任何地方都不可见?
在您有权访问的<%#%>标记内
Container实际上是RepeaterItemEventArgs.Item,DataListItemEventArgs.Item等的包装器.因此,您实际上可以在ItemDataBound事件中的代码中以e.Item(通常是事件参数参数名称)访问它.
使用System.Web.UI.DataBinder也可以在代码后面访问DataBinder.
另外,使用Eval优先选择转换Container.DataItem.Eval使用反射,因此有一个开销.在VB.NET中它会是这样的
<%#DirectCast(Container.DataItem, DataRow)("some_column")%>
Run Code Online (Sandbox Code Playgroud)
或C#
<%#((DataRow)Container.DataItem)["some_column"].ToString()%>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1140 次 |
最近记录: |