【问题标题】:How to bind multiple data on one element (Gridview)?如何在一个元素(Gridview)上绑定多个数据?
【发布时间】:2019-01-13 04:36:15
【问题描述】:

我想在我的网格视图上绑定数据库中的多个属性,所以我有(名字、中间名和姓氏)并且我想将它们连接到我的网格视图(名称)的一列中

<asp:GridView ID="GV1" runat="server" AutoGenerateEditButton="true" 
    AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Label 
                    ID="edtName" 
                    runat="server" 
                    Text='<%# Bind("Name") %>' 
                />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

那么,我该如何绑定它们呢? 我正在使用 Visual Studio 2013,带有 c# 的 asp.net,谢谢。

【问题讨论】:

  • 你可以试试&lt;%# Bind("firstname") %&gt;+' '+&lt;%# Bind("middlename") %&gt;'+' '+'&lt;%# Bind("lastname") %&gt;'
  • 您可以有多个绑定:Text='&lt;%# string.Format("{0} {1} {2}", Bind("FirstName"), Bind("MiddleName"), Bind("LastName")) %&gt;' 。或者更改您的查询语句以将所有三个连接到单个字符串 (SELECT FirstName + MiddleName + LastName AS Name, ...)
  • 亲爱的 Tetsuya Yamamoto,第一个方法对我不起作用,异常消息是(CS0103:名称 'Bind' 在当前上下文中不存在)。
  • @ShahadHassan 我发现你不能多次使用Bind,但你可以对所有这些使用EvalText='&lt;%# string.Format("{0} {1} {2}", Eval("FirstName"), Eval("MiddleName"), Eval("LastName")) %&gt;'
  • 是的,现在可以了,谢谢山本先生 :)

标签: c# asp.net sql-server visual-studio


【解决方案1】:

有两种方法可以做到这一点:

1) 使用字符串连接

Text 属性上的字符串连接不允许多个Bind 方法进行数据绑定,因此此处应使用Eval

+运营商版本

<asp:TemplateField>
    <ItemTemplate>
        <asp:Label ID="edtName" runat="server" Text='<%# Eval("firstname") %> + ' ' + <%# Eval("middlename") %> + ' ' + <%# Eval("lastname") %>' />
    </ItemTemplate>
</asp:TemplateField>

String.Format 版本

<asp:TemplateField>
    <ItemTemplate>
        <asp:Label ID="edtName" runat="server" Text='<%# String.Format("{0} {1} {2}", Eval("FirstName"), Eval("MiddleName"), Eval("LastName")) %>' />
    </ItemTemplate>
</asp:TemplateField>

2) 使用 AS 别名修改查询

使用COALESCE operator 将所有相关字段组合成单个字符串,并给出一个别名,该别名与标签的Bind 中定义的键相同:

SELECT COALESCE(FirstName, '') || COALESCE(MiddleName, '') || COALESCE(LastName, '') AS Name FROM TableName ...

【讨论】:

    【解决方案2】:

    你可以像下面这样使用 Eval:

    Text='<%# string.Concat(Eval("FirstName"), " ", Eval("LastName"))%>'
    

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      相关资源
      最近更新 更多