2014-09-29 2 views
0

임의의 SQL SELECT 문을 입력 할 수있는 텍스트 상자가 있습니다. 결과 및 차트뿐만 아니라 사용자가 x 축에 표시 할 결과 열을 선택할 수있는 y 축과 x 축 모두에 대한 드롭 다운 목록을 표시하는 테이블을 생성하려고합니다. 중심선.sqldatasource의 열 머리글이있는 드롭 다운 목록 채우기

현재 텍스트 상자의 텍스트를 사용하여 SqlDataSource의 SelectCommand를 업데이트합니다. GridView는 AutoGenerateColumns가 true로 설정된 데이터 소스에 연결되어 있습니다. 이것은 내 테이블을 잘 생성합니다.

같은 데이터 소스에 연결된 차트가 있고 두 개의 드롭 다운 목록을 결과 열 머리글에 채우고 차트의 XValueMember & XValueMember 특성을 업데이트하고 싶습니다. 내가 겪고있는 문제는 드롭 다운 목록을 채우기 위해 열 이름을 결정하는 방법입니다. GridView가 자동으로 생성하므로, 거기에서 읽으려고했으나 가장 최근의 SELECT 문에있는 값이 아니라 이전 값을 가져옵니다.

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

을하지만 어떻게 드롭 다운 상자를 채우는 : 내 default.aspx에에서

나는 있습니다.

+0

당신은 무엇을 시도

Default.aspx를 : 같은 코드는 이제 보이는? 질문에 코드를 추가하고 문제가있는 곳을 알려주십시오. – Sam

답변

0

page_load 동안 gridview 열을 읽고 XSeries 및 YSeries 차트를 읽는 것이 효과적이었습니다.

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

} 
관련 문제