如何将2个DataSet表结果放在一个GridView列中?

时间:2009-05-11 17:39:34

标签: c# .net asp.net html

我有两个数据集的结果。我想在一个gridview列中添加两个结果。我不想在后面的代码中合并。还有另一种方法吗?

<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-PASSED”

3 个答案:

答案 0 :(得分:4)

你试过了吗?

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

如果这不起作用,您应该可以为这些组合行设置TemplateField:

<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中的连接速度最快,然后在代码隐藏中的数据集中连接,在ASP.Net页面上组合它们将是最慢的。

答案 1 :(得分:0)

另一种选择是使用DataColumn.Expression属性在DataTable中创建计算列

答案 2 :(得分:0)

我的第一个问题是为什么你不想合并后面的代码?绑定到控件的内容越多,放入控件视图状态的数据就越多。

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