【问题标题】:Setting an ItemTemplate property in RunTime在 RunTime 中设置 ItemTemplate 属性
【发布时间】:2013-08-13 16:43:10
【问题描述】:

我试图在我的 ASP.Net 应用程序的 GridView 中显示一个小的进度条。我正在尝试使用 ItemTemplate。

                            <ItemTemplate>
                                <table width="100%">
                                    <tr>
                                        <td style="width: 75%; background-color: red"></td>
                                        <td style="width: 25%; background-color: green" ></td>
                                    </tr>
                                </table>
                            </ItemTemplate>

我想根据行内某些值的计算来设置宽度百分比。

可以用 Eval 以某种方式完成吗?还是我需要在后面做一些代码?

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    您可以尝试以下方法(示例计算如下):

    <td style='<%# string.Format("width: {0}%; background-color: red", (int)Eval("Width") / 100) %>'></td>
    

    但是为了可读性,你最好把整个字符串结构移到后面的代码中,然后在页面上调用相应的方法。

    更新。 至于代码背后的方法,这里是如何完成的。定义一个将进行适当计算并返回字符串的方法:

    protected string GetCellStyle(int width)
    {
        return string.Format("width: {0}%; background-color: red", width / 100);
    }
    

    并使用相同的数据绑定语法调用它:

    <td style='<%# GetCellStyle((int)Eval("Width")) %>'></td>
    

    【讨论】:

    • 谢谢。后面的代码可能会更好,更容易维护/调试。将使用什么事件? OnRowBound?
    • @Craig,请查看更新。您也可以使用RowDataBound 事件,但这似乎是一个开销。
    • 谢谢安德烈。这看起来是一个很好的方法。我现在唯一的问题是,我不能 100% 确定如何从用于生成该行的 ObjectDataSource 行中获取我需要的字段。我的数据行中有两个字段,用于创建此行:IntitialProductiveHours 和 ProductiveHoursRemaining - 从那里,我想显示剩余时间的百分比。
    • @Craig,Eval("IntitialProductiveHours")Eval("ProductiveHoursRemaining") 有什么问题吗?使上面的函数接受两个参数,执行计算,你应该没问题。
    • 谢谢!完全按预期工作。
    猜你喜欢
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    相关资源
    最近更新 更多