簡體   English   中英

使用sqldatasource中的列標題填充下拉列表

[英]populate drop-down list with column headings from sqldatasource

我有一個文本框,可以在其中輸入任意SQL SELECT語句。 我想生成一個顯示結果的表格,一個圖表以及一個y和x軸的下拉列表,用戶可以在其中選擇要在x軸上顯示哪個結果列以及在y-軸上顯示哪個結果列。軸。

目前,我使用文本框中的文本來更新SqlDataSource的SelectCommand。 我有一個與AutoGenerateColumns設置為true的數據源綁定的GridView。 這很好地生成了我的表。

我將圖表綁定到相同的數據源,我想在結果列標題中填充兩個下拉列表,然后更新圖表的XValueMember和XValueMember屬性。 我遇到的問題是如何確定列名稱以便填充下拉列表。 由於GridView會自動生成這些值,因此我嘗試從那里讀取值,但是我得到的是舊值,而不是最新SELECT語句中的值。

在我的default.aspx中,我有:

<asp:Chart ID="Chart1" runat="server" DataSourceID="SqlDataSource1">
    <Series>
        <asp:Series Name="Series1" ChartType="Line"></asp:Series>
    </Series>
    <ChartAreas>
        <asp:ChartArea Name="ChartArea1"></asp:ChartArea>
    </ChartAreas>
</asp:Chart>
<asp:DropDownList ID="ddlX" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlX_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="ddlY" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlY_SelectedIndexChanged">
</asp:DropDownList>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True" DataSourceID="SqlDataSource1" AllowSorting="True">
</asp:GridView>
<asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString='<%$ ConnectionStrings:myConnectionString %>'</asp:SqlDataSource>

並在代碼隱藏(C#)中

protected void ddlX_SelectedIndexChanged(object sender, EventArgs e)
{
    Chart1.Series[0].XValueMember = this.ddlX.SelectedValue;
}
protected void ddlY_SelectedIndexChanged(object sender, EventArgs e)
{
    Chart1.Series[0].YValueMembers = this.ddlY.SelectedValue;
}

但是如何填充下拉框。

我能夠得到一個可行的解決方案:在page_load期間閱讀gridview列並更新圖表XSeries和YSeries。 現在的代碼如下所示:

Default.aspx

<asp:Chart ID="Chart1" runat="server" DataSourceID="SqlDataSource1">
    <Series>
        <asp:Series Name="Series1" ChartType="Line"></asp:Series>
    </Series>
    <ChartAreas>
        <asp:ChartArea Name="ChartArea1"></asp:ChartArea>
    </ChartAreas>
</asp:Chart>
<asp:DropDownList ID="ddlX" runat="server" AutoPostBack="True">
</asp:DropDownList>
<asp:DropDownList ID="ddlY" runat="server" AutoPostBack="True">
</asp:DropDownList>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True" DataSourceID="SqlDataSource1" AllowSorting="True">
</asp:GridView>
<asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString='<%$ ConnectionStrings:myConnectionString %>'</asp:SqlDataSource>

Default.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    // get column names from gridview and populate ddl
    int cols = GridView1.HeaderRow.Cells.Count;
    int selInd = ddlX.SelectedIndex;
    ddlX.Items.Clear();
    for (int i = 0; i < cols; i++)
    {
        LinkButton Link = GridView1.HeaderRow.Cells[i].Controls[0] as LinkButton;
        string col = Link.Text;
        ddlX.Items.Insert(i, col);
    }
    ddlX.SelectedIndex = selInd;
    cols = GridView1.HeaderRow.Cells.Count;
    selInd = ddlY.SelectedIndex;
    ddlY.Items.Clear();
    for (int i = 0; i < cols; i++)
    {
        LinkButton Link = GridView1.HeaderRow.Cells[i].Controls[0] as LinkButton;
        string col = Link.Text;
        ddlY.Items.Insert(i, col);
    }
    ddlY.SelectedIndex = selInd;
    // set chart axes
    Chart1.Series[0].XValueMember = ddlX.SelectedValue;
    Chart1.Series[0].YValueMembers = ddlY.SelectedValue;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM