如果我有以下(通用)ASP代码:
<asp:ObjectDataSource runat="server" ID="myODS">...</asp:ObjectDataSource> <asp:GridView runat="server" ID="myGV" DataSourceID="myODS"> <Columns> <asp:TemplateField> <ContentTemplate> <asp:Label runat="server" ID="myLabel" Text='<%# [What goes here?] %>' /> </ContentTemplate> </asp:TemplateField> <asp:BoundField ... /> <%-- Other columns... --%> </Columns> </asp:GridView>
我可以在我的模板字段内的ASP表达式中调用哪些内容,以便我可以访问我的ODS结果?基本上,在表达式中,我想做row("ID")
之类的操作,以便从我的ODS中的列中获取特定值。
答案 0 :(得分:1)
您可以使用许多不同的语法来指定特定属性。最简单的方法是使用Eval方法:
<asp:Label runat="server" ID="myLabel" Text='<%# Eval("ID") %>' />
这是使用DataBinder.Eval静态方法的更详细语法的简写语法,因此如果需要,可以使用这种更详细的语法:
<asp:Label runat="server" ID="myLabel" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>' />
有关DataBinder.Eval的MSDN文档的
编辑: 有一件事我忘了提到ASP.Net 2.0及更高版本支持“Bind”方法:
<asp:Label runat="server" ID="myLabel" Text='<%# Bind("ID") %>' />
名义上支持双向数据绑定。因此,如果使用Bind方法,则不必手动从插入或删除的行中屏蔽您的值,ASP.Net基础结构将处理生成新对象或已修改对象。然而,在实践中,使用它有很多警告。您的域对象必须具有默认构造函数,只能由简单的属性组成,我认为还有一些。在实践中,这是如此限制,我不认为它是一个非常有用的东西。但我只是想指出来。