我有这样的下拉列表:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
Height="22px" Width="650px">
<asp:ListItem> </asp:ListItem>
<asp:ListItem>spy</asp:ListItem>
<asp:ListItem>uk</asp:ListItem>
<asp:ListItem>it</asp:ListItem>
</asp:DropDownList>
我使用csv文件获取数据。像这样:
spy.csv
uk.csv
it.csv
我可以为3个csv文件添加3 sqldatasources并链接gridview等。
但我需要这样做,当我在我的下拉列表中选择间谍时,gridview使用spydatasource,当我选择uk时,gridview使用ukdatasource。
我该怎么办?
数据源
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
SelectCommand="SELECT * FROM [spy.csv] WHERE ([Hostname] = ?)">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="Hostname"
PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
SelectCommand="SELECT * FROM [uk.csv] WHERE ([Hostname] = ?)">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="Hostname"
PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
SelectCommand="SELECT * FROM [it.csv] WHERE ([Hostname] = ?)">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="Hostname"
PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
答案 0 :(得分:4)
这将是一个太多的信息,不能发表评论,所以我会写一个答案。如果它符合您的要求,请告诉我。
前端:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
Height="22px" Width="650px" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem> </asp:ListItem>
<asp:ListItem>spy</asp:ListItem>
<asp:ListItem>uk</asp:ListItem>
<asp:ListItem>it</asp:ListItem>
</asp:DropDownList>
<asp:GridView ID="GridViewID" .... >
</asp:GridView>
代码隐藏
protected void DropDownList1_SelectedIndexChanged(Object sender, EventArgs e) {
if(DropDownList1.SelectedIndex != 0)
{
var csvFile = DropDownList1.SelectedValue + ".csv";
DataTable dt = //Convert csvFile to dataTable
GridViewID.DataSource= dt;
//This is an alternate method, setting the Select Command of a given SqlDataSource
SqlDataSourceID.SelectCommand = String.Format("SELECT * FROM [{0}] WHERE ([Hostname] = ?)",csvFile);
}
}
以下是我发现如何将CSV转换为GridView数据源的简短指南; http://www.c-sharpcorner.com/UploadFile/hrojasara/how-you-can-use-csv-file-as-data-source-of-gridview/
编辑: 添加了另一种处理更改DropDownList的方法。
让我知道它是否有帮助!
答案 1 :(得分:1)
这样的东西?
protected void DropDownList1_SelectedIndexChanged(Object sender,EventArgs e) {
if(DropDownList1.SelectedItem.Text == "1ofthevalues") { yourGridview.DataSource= yourDataSourceID yourGridview.DataBind(); } }
哦,将{OnSelectedIndexChanged =&#34; DropDownList1_SelectedIndexChanged&#34;}添加到您的下拉列表
答案 2 :(得分:1)
我会选择桑德的评论。
或者,我有三个不同的数据源(每个都有不同的选择命令)。我有三个相应的连接。
根据我的下拉选择,我将使下拉列表的所选选项对应的网格可见。
这是一个小问题的远景。但只能通过设计师才能做到。