代码之家  ›  专栏  ›  技术社区  ›  MrM

如何将2个数据集表结果放入一个GridView列中?

  •  0
  • MrM  · 技术社区  · 15 年前

    我有两个数据集的结果。我想在一个网格视图列中添加两个结果。我不想合并后面的代码。还有别的办法吗?

    <asp:TemplateField HeaderText="Entered Date" SortExpression="Date">
                        <ItemTemplate>
                        <div style="text-align: center;">
                            <asp:Label ID="Label3" runat="server" Text='<%# formatDisplayDate(Eval("Date").ToString()) %>'></asp:Label>
                        </div>
                        </ItemTemplate>                    
                    </asp:TemplateField>
    

    现在我将返回“04/04/2009”。我想退“04/04/2009-通过”

    3 回复  |  直到 15 年前
        1
  •  4
  •   Gary.Ray    15 年前

    你试过了吗?

    formatDisplayDate(Eval("Date").ToString()) & "-" & Eval("OtherField").ToString()
    

    如果这不起作用,您应该能够为如下组合的行设置模板字段:

    <asp:TemplateField HeaderText="CombinedFieldName" SortExpression="CombinedFieldName">
        <ItemTemplate>
           <asp:Label ID="Label1" runat="server" 
           Text='<%# DataBinder.Eval(Container,"DataItem.FirstField") %>' >
           </asp:Label>
           -
           <asp:Label ID="Label2" runat="server" 
           Text='<%# DataBinder.Eval(Container,"DataItem.SecondField") %>' >
           </asp:Label>
            </ItemTemplate>
    </asp:TemplateField>
    

    也就是说,如果可能的话,在数据库操作中进行字段连接通常会更有效率。我还没有测试过,但是我假设在select中连接最快,然后在codebehind中连接数据集,并在asp.net页面上组合它们将是最慢的。

        2
  •  0
  •   Thomas Levesque    15 年前

    另一个选项是使用DataColumn.Expression属性在DataTable中创建计算列。

        3
  •  0
  •   Bob The Janitor    15 年前

    我的第一个问题是,为什么不合并到代码隐藏中?绑定到控件的内容越多,进入该控件视图状态的数据就越多。

    @Gary.Ray有一个非常好的解决方案,但是您可能会发现更好的方法是使用Linq从现有的数据集构建一个单一的数据对象,这样您只需要包含您需要的内容,而且数据更容易隔离,如果您可以将处理数据获取的代码移动到一个只有处理获取您的应用程序在未来将很容易维护的数据。