在服务器端的ASP.NET控件中设置C#内联表达式
本文关键字:设置 表达式 控件 服务器端 ASP NET | 更新日期: 2023-09-27 18:29:01
是否可以在服务器端代码中以编程方式插入C#内联表达式作为ASP.NET控件的值?
我目前正在使用DataList
在表中显示大量数据。我希望能够动态更改该表的列,因此我需要能够编辑其ItemTemplate
中的控件。
但是,除了编辑ItemTemplate
中的控件外,我还需要能够更改绑定到模板中每个控件的值,因为我想动态地更改显示的内容。
所以我目前拥有的是一个不变的静态表:
<asp:DataList ID="dataList" runat="server" OnSelectedIndexChanged="dataList_OnSelectedIndexChanged" DataSourceID="peopleData">
<ItemTemplate>
<table>
<tr>
<td>
<asp:LinkButton ID="NameLink" OnClientClick="onPageUpdate()" CommandName="Select" Text='<%# Eval(this.Name) %>' ForeColor='<%# Eval("this.NameColor") %>' runat=Server" />
</td>
<td>
<asp:Label Text='<%# Eval("this.Values['"Age'"]") %>' ForeColor='<%# Eval("this.ValueColors['"Age'"]") %>' runat="Server">
</td>
// OTHER COLUMNS WITH DIFFERENT DATA
</tr>
</table>
</ItemTemplate>
</asp:DataList>
// OBJECT DATA SOURCE CODE
我知道如何将控件动态添加到ASPX网页中。但是,我不知道如何添加内联表达式。
我试过做以下操作,但由于类型不匹配,它不起作用:
Label label = new Label();
label.Text = "<%# Eval('"this.Values['''"Age'''"]'") %>";
label.ForeColor = "<%# Eval('"this.ValueColors['''"Age'''"]'") %>";
有没有办法做到这一点或做类似的事情?
我现在唯一能想到的另一个选择是放弃使用DataList
和ItemTemplate
,只自己生成每一行。。与仅使用ItemTemplate
相比,这是更多的编码。
不确定这是否会对您有所帮助,但请查看http://msdn.microsoft.com/en-us/library/system.web.ui.databinder(v=vs.100).aspx
它展示了使用手写的属性暴露。如果您的属性总是被称为"magic",并且您在代码中返回magic的适当值,这会得到您所需要的吗?