在.net 2008
我想使用多个选择查询将数据绑定到网格视图 原因是我希望数据来自多个数据 我必须先对数据进行一些处理才能在网格视图中显示
一个例子是(我不必实际这样做)
我有两个表,其中列为uid,uname为udata 其他列uid和unum命名为uinfo 现在的问题是我希望通过复杂的操作将uid uname和unum连接在一起并在网格视图中显示它 复杂的操作只能在C#中完成,而不能在T-SQL中完成
我基本上假设单个查询无法获取数据
所以我如何为网格视图
执行此操作答案 0 :(得分:0)
如果gridview可以显示它,那么你无法真正说明“单个查询无法获取数据”。 UNION您的各种select语句,确保列的数据类型对齐。您还可以访问服务器上的连接运算符和各种子字符串函数。
答案 1 :(得分:0)
遍历您的DataTable并创建另一个数据表以绑定到网格视图。
答案 2 :(得分:0)
您使用ADO.NET
返回DataSet
两个DataTable
或join
或union
个查询,并使用标识符column
例如来自QueryType
的{{1}}类型并使用bit
,第一个查询集union
改为QueryType
,第二个查询设置为0
然后C#部分只是它们之间的尊重,但1
。
我更喜欢带有两张桌子的QueryType
答案 3 :(得分:0)
请尝试以下代码。
<div>
<asp:SqlDataSource ID="sds_udata" runat="server"
ConnectionString="<%$ ConnectionStrings:Local %>"
ProviderName="<%$ ConnectionStrings:Local.ProviderName %>"
SelectCommand="select * from udata"
</asp:SqlDataSource>
<asp:SqlDataSource ID="sds_uninfo" runat="server"
SelectCommand="select * from uinfo"
ConnectionString="<%$ ConnectionStrings:Local %>"
ProviderName="<%$ ConnectionStrings:Local.ProviderName %>"></asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="sds_udata" AutoGenerateEditButton="True" ShowFooter="True"
AutoGenerateDeleteButton="True"
DataKeyNames="uid">
<Columns>
<asp:TemplateField HeaderText="User ID" >
<itemtemplate>
<asp:Label ID="uid" runat="server" Text='<%# Bind("uid") %>'></asp:Label>
</itemtemplate>
<edititemtemplate>
<asp:TextBox ID="txtuid" runat="server" Text='<%# Bind("uid") %>' Width="98%" MaxLength="6" ></asp:TextBox>
</edititemtemplate>
<footertemplate>
<asp:TextBox ID="txtNewuid" runat="server" Text='<%# Bind("uid") %>' Width="98%" MaxLength="6"></asp:TextBox>
</footertemplate>
<itemstyle width="80px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="User Name" >
<itemtemplate>
<asp:Label ID="uname" runat="server" Text='<%# Bind("uname") %>'></asp:Label>
</itemtemplate>
<edititemtemplate>
<asp:TextBox ID="txtuname" runat="server" Text='<%# Bind("uname") %>' Width="98%" MaxLength="6" ></asp:TextBox>
</edititemtemplate>
<footertemplate>
<asp:TextBox ID="txtNewuname" runat="server" Text='<%# Bind("uname") %>' Width="98%" MaxLength="6" ></asp:TextBox>
</footertemplate>
<itemstyle width="80px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Custom Field" >
<ItemTemplate>
<asp:Label ID="lblLocation" runat="server" Text='<%# LookupCustomeField(DataBinder.Eval(Container.DataItem, "uid"), DataBinder.Eval(Container.DataItem, "uname"), DataBinder.Eval(Container.DataItem, "unum")) %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="25%" />
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
protected string LookupCustomeField(object uid, object uname, object unum)
{
string strUid, strUname, strUnum, result;
if ((string.IsNullOrEmpty(uid.ToString())) || (string.IsNullOrEmpty(uname.ToString())) ||(string.IsNullOrEmpty(unum.ToString())))
return null;
strUid = uid.ToString();
strUname = uname.ToString();
strUnum = unum.ToString();
result = strUid+ strUname+strUnum;
return result;
}