如何使用下拉列表选择数据源

时间:2014-11-18 08:58:03

标签: c# asp.net csv gridview

我有这样的下拉列表:

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

3 个答案:

答案 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)

我会选择桑德的评论。

或者,我有三个不同的数据源(每个都有不同的选择命令)。我有三个相应的连接。

根据我的下拉选择,我将使下拉列表的所选选项对应的网格可见。

这是一个小问题的远景。但只能通过设计师才能做到。