C#ASP.NET Application ComboBox绑定到GridView显示问题

时间:2017-09-13 18:58:52

标签: c# asp.net gridview drop-down-menu

我正在创建一个ASP.NET Web应用程序,它将显示SQL数据库中的特定数据。我创建了3个DataSources,每个特定于我希望从DropDownList中选择的数据。

我的DropDownList编码C#Side如下:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string SourceName = DropDownList1.SelectedValue;
            GridView1.DataSourceID = SourceName;
            GridView1.DataBind();
        }

ASP.NET端的DropDownList编码:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
            <asp:ListItem Value="DataSource_Gerneral">General Overview</asp:ListItem>
            <asp:ListItem Value="DataSource_Portfolio">Portfolio</asp:ListItem>
            <asp:ListItem Value="DataSource_ErrorLog">Error Log</asp:ListItem>
        </asp:DropDownList>

ASP.NET端的网格视图编码如下:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BorderStyle="Inset" CellPadding="4" DataKeyNames="Call_Sign" DataSourceID= "DataSource_Gerneral" Font-Size="Smaller" ForeColor="#333333" GridLines="None" Height="16px" Width="155px" AllowPaging="True" AllowSorting="True" ClientIDMode="AutoID" HorizontalAlign="Justify" PageSize="100" OnSelectedIndexChanged="GridView1_SelectedIndexChanged1">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />



            <Columns>
                <asp:BoundField DataField="Call_Sign" HeaderText="Call_Sign" ReadOnly="True" SortExpression="Call_Sign" />
                <asp:BoundField DataField="Current_Price" HeaderText="Current_Price" SortExpression="Current_Price" />
                <asp:BoundField DataField="Stock_Market" HeaderText="Stock_Market" SortExpression="Stock_Market" />
            </Columns>



            <EditRowStyle BackColor="#999999" />
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#E9E7E2" />
            <SortedAscendingHeaderStyle BackColor="#506C8C" />
            <SortedDescendingCellStyle BackColor="#FFFDF8" />
            <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
        </asp:GridView>

我测试了下拉列表以确保它实际上正在更改DatasourceID。它运作正常。但是,如果将选定视图选择到下拉列表中,则gridview保持不变。我一直在寻找一种显示新数据的方法。我错过了什么!我希望它只是一个简单的代码行,它将在运行时更改gridview。

1 个答案:

答案 0 :(得分:0)

我忽视了一个巨大的改变游戏规则的人。我没有改变正确的地方。由于所有信息都来自同一个数据库。我不得不编写3个if语句来更改command.CommandText语句。在前。

If (DataName == "DataSource_General)
{
    command.CommandText = " ... Select...";
}

If (DataName == "DataSource_Portfolio")
{
    command.CommandText = " ... Select ...";
}

通过这样做,我的数据显示正确。您也可以将DropDownList ItemValue配置为命令文本,然后通过以下方式调用它:

String selectStatement = DropDownList.SelectedValue.ToString();
command.CommandText = selectStatement;

通过第二种方式,您可以获得更清晰的代码。