2014-06-21 1 views
0

차트에서 데이터베이스의 일부 값을 표시하기 위해 ASP 차트 컨트롤을 사용하고 있습니다. 그러나, 나는 단 한 줄 주석으로 지정한 다음 오류에 직면했다. 다음과 같이
차트 컨트롤에 대한 데이터 바인딩이 실패했습니다.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      string query = "select distinct name from tblDars"; 
      DataTable dt = GetData(query); 
      ddlSubject.DataSource = dt; 
      ddlSubject.DataTextField = "tblDars"; 
      ddlSubject.DataValueField = "tblDars"; 
      //ddlSubject.DataBind(); 
      ddlSubject.Items.Insert(0, new ListItem("Select", "")); 
     } 
    } 

컨트롤의 태그는 다음과 같습니다

<asp:DropDownList ID="ddlSubject" runat="server" 
onselectedindexchanged="ddlSubjectChanged" AutoPostBack = "true"> 
</asp:DropDownList><hr /> 
<asp:Chart ID="Chart1" runat="server" Height="300px" Width="400px" Visible = "false"> 
    <Titles> 
     <asp:Title ShadowOffset="3" Name="Items" /> 
    </Titles> 
    <Legends> 
     <asp:Legend Alignment="Center" Docking="Top" IsTextAutoFit="False" Name="Default" LegendStyle="Row" /> 
    </Legends> 
    <Series> 
     <asp:Series Name="درس" /> 
    </Series> 
    <ChartAreas> 
     <asp:ChartArea Name="ChartArea1" BorderWidth="0" /> 
    </ChartAreas> 
</asp:Chart> 

내가 너무 클래스 내에서 사용하고 다른 두 기능이있다;
, 하나는 이벤트 처리 용이고 다른 하나는 데이터베이스 작업용입니다. 아래에 나와 있습니다.

protected void ddlSubjectChanged(object sender, EventArgs e) 
    { 
     Chart1.Visible = ddlSubject.SelectedValue != ""; 
     //string query = string.Format("select shipcity, count(orderid) from orders where shipcountry = '{0}' group by shipcity", ddlSubject.SelectedValue); 
     string query = string.Format("select Name, count (id) from tblDars where Name='{0}' group by Name", ddlSubject.SelectedValue); 
     DataTable dt = GetData(query); 
     string[] x = new string[dt.Rows.Count]; 
     int[] y = new int[dt.Rows.Count]; 
     for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      x[i] = dt.Rows[i][0].ToString(); 
      y[i] = Convert.ToInt32(dt.Rows[i][1]); 
     } 
     Chart1.Series[0].Points.DataBindXY(x, y); 
     Chart1.Series[0].ChartType = SeriesChartType.Bar; 
     Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = false; 
     Chart1.Legends[0].Enabled = true; 
    } 

     private static DataTable GetData(string query) 
    { 
     DataTable dt = new DataTable(); 
     SqlCommand cmd = new SqlCommand(query); 
     String constr = ConfigurationManager.ConnectionStrings["SchoolConnectionString"].ConnectionString; 
     SqlConnection con = new SqlConnection(constr); 
     SqlDataAdapter sda = new SqlDataAdapter(); 
     cmd.CommandType = CommandType.Text; 
     cmd.Connection = con; 
     sda.SelectCommand = cmd; 
     sda.Fill(dt); 
     return dt; 
    } 

모든 것이 정상적으로 보입니다. 오류의 원인을 알 수 없습니다.

답변

0

당신은 DB에서 "이름"열을 반환하고 있지만 잘못된 열 이름

DataTextField 및 DataValueField에서 유효 열을 지정을 설정하고 있습니다.

ddlSubject.DataTextField = "name"; 
ddlSubject.DataValueField = "name"; 
관련 문제