C# 一个Gridview和多个SqlDataSource
我有一个gridview,我想使用两个或多个单独的查询。换句话说,我不希望有两个GridView,每个GridView都有一个sqldatasource 如何只使用一个gridview并使用多个SqlDataSource?例如,如果我有两个按钮。单击一个数据源时使用一个数据源,单击另一个数据源时使用另一个数据源,同时使用相同的gridviewC# 一个Gridview和多个SqlDataSource,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个gridview,我想使用两个或多个单独的查询。换句话说,我不希望有两个GridView,每个GridView都有一个sqldatasource 如何只使用一个gridview并使用多个SqlDataSource?例如,如果我有两个按钮。单击一个数据源时使用一个数据源,单击另一个数据源时使用另一个数据源,同时使用相同的gridview <div id ="Div1" runat ="server"> <asp:GridView ID="GridView1" ru
<div id ="Div1" runat ="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CellPadding="4" ForeColor="#333333"
GridLines="None" Width="100%" AllowPaging="True" AllowSorting="True"
PageSize="20">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="ItemDesc" HeaderText="Item Description"
SortExpression="ItemDesc" />
<asp:BoundField DataField="TypeDesc" HeaderText="Type"
SortExpression="TypeDesc" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="Total" HeaderText="Total"
SortExpression="Total" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<SortedAscendingCellStyle BackColor="#FDF5AC" />
<SortedAscendingHeaderStyle BackColor="#4D0000" />
<SortedDescendingCellStyle BackColor="#FCF6C0" />
<SortedDescendingHeaderStyle BackColor="#820000" />
</asp:GridView>
<%--Query to get total --%>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:TLineConnectionString %>"
SelectCommand="SELECT ItemDesc, TypeDesc, Total FROM vwTotal WHERE Admin = 0 ORDER BY Total DESC">
</asp:SqlDataSource>
<%--Query to get total Admin only--%>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:LineConnectionString %>"
SelectCommand="SELECT ItemDesc, TypeDesc, Total FROM vwTotal WHERE Admin = 1 ORDER BY Total DESC">
</asp:SqlDataSource>
</div>
在每个按钮的单击事件上,只需将GridView1.DataSourceID
更改为正确的SqlDataSource的id即可。之后可能需要一个GridView1.DataBind()
,但我不确定,因为您使用的是SqlDataSources。首先尝试不使用,如果不起作用,则添加数据绑定。在按钮单击事件上,您可以更改SqlDataSource1的select命令
//Button1 Click
SqlDataSource1.SelectCommand="SELECT ItemDesc, TypeDesc, Total FROM vwTotal WHERE Admin = 0 ORDER BY Total DESC";
GridView1.DataSource = SqlDataSource1;
GridView1.DataBind();
//Button2 Click
SqlDataSource1.SelectCommand="SELECT ItemDesc, TypeDesc, Total FROM vwTotal WHERE Admin = 1 ORDER BY Total DESC";
GridView1.DataSource = SqlDataSource1;
GridView1.DataBind();
编辑:
使用下拉列表:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
int selindex = DropDownList1.SelectedIndex;
if (selindex == 0) //Option1 selected
{
SqlDataSource1.SelectCommand = "SELECT ItemDesc, TypeDesc, Total FROM vwTotal WHERE Admin = 0 ORDER BY Total DESC";
GridView1.DataSource = SqlDataSource1;
GridView1.DataBind();
}
else if (selindex == 1) //Option2 selected
{
SqlDataSource1.SelectCommand = "SELECT ItemDesc, TypeDesc, Total FROM vwTotal WHERE Admin = 1 ORDER BY Total DESC";
GridView1.DataSource = SqlDataSource1;
GridView1.DataBind();
}
}
我假设您在dropdownlist集合中添加了两项,如[Option1和Option2]
不要忘记设置[Dropdownlist 1.AutoPostBack=“True”],否则它不会触发[SelectedIndexChanged]事件。您知道如何使用Dropdownlist吗