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;
}
모든 것이 정상적으로 보입니다. 오류의 원인을 알 수 없습니다.