【问题标题】:Best Technique for Multiple Eval Fields in Gridview ItemTemplate?Gridview ItemTemplate 中多个评估字段的最佳技术?
【发布时间】:2010-09-08 12:13:24
【问题描述】:

在 GridView ItemTemplate 中使用多个 EVAL 字段的最佳方法是什么?

希望对外观格式以及设置超链接/javascript等有一些控制。

【问题讨论】:

    标签: asp.net data-binding gridview eval


    【解决方案1】:

    更清楚的是,IMO:

    <%# String.Format("{0} - {1}", Eval("Name1"), Eval("Name2")) %>
    

    【讨论】:

    • 假设 Name1 是一个字符串说“奥巴马.....”如何使用格式字符串只获取前 3 个字符...?
    【解决方案2】:

    我以前用过这个(不好,我知道):

    <%# Eval("Name1", "{0} - ")%> <%#Eval("Name2")%>
    

    结果 = '约翰 - 史密斯'

    但刚刚发现我也可以将两个(或更多)Eval 放在同一个数据绑定组中:

    <%#Eval("Name1") & " - " & Eval("Name2")%>
    

    结果 = '约翰 - 史密斯'

    或者

    <%# "First Name - " & Eval("Name1") & ", Last Name - " & Eval("Name2")%>  
    

    结果 = '名字 - 约翰,姓氏 - 史密斯'

    【讨论】:

      【解决方案3】:

      Eval 和 Bind 都很糟糕。
      为什么要通过反射获取属性?您可以像这样直接访问它:

      ((MyObject)Container.DataItem).MyProperty

      对象在运行时并不为您所知。无论如何,这是我的两分钱。

      【讨论】:

      • 完全喜欢这个方法,很干净。
      【解决方案4】:

      我有一个最简单的方法来做同样的事情......

      <asp:Label ID="lblName" runat="server" Text='<%#Eval("FirstName").ToString() +", "+ Eval("LastName").ToString() %>'></asp:Label>
      

      .

      <%#Eval("FirstName").ToString() +", "+ Eval("LastName").ToString() %>
      

      这里两个对象都被转换成字符串连接起来。

      【讨论】:

        最近更新 更多