【问题标题】:Set C# Inline Expressions in ASP.NET Controls On Server-Side在服务器端的 ASP.NET 控件中设置 C# 内联表达式
【发布时间】:2013-08-27 01:25:34
【问题描述】:

是否可以在服务器端代码中以编程方式插入 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\\\"]\") %>";

有没有办法实现这一点或做类似的事情?

我现在唯一能想到的其他选择是废弃使用 DataListItemTemplate 并自己生成每一行。与仅使用 ItemTemplate 相比,这需要更多的编码。

【问题讨论】:

    标签: c# asp.net datalist


    【解决方案1】:

    不确定这是否对您有帮助,但请查看http://msdn.microsoft.com/en-us/library/system.web.ui.databinder(v=vs.100).aspx

    它显示了使用手写属性的暴露。如果您的属性始终被称为“魔法”,并且您在代码中为 magic 返回适当的值,那会得到您所需要的吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      相关资源
      最近更新 更多