2014-01-18 3 views
1

asp.net에서 AJAX 선형 차트를 설정할 때 몇 가지 문제가 있습니다. 내가하려는 것은 드롭 다운 목록에서 카테고리를 선택한 다음 꺾은 선형 차트는 매월 각 카테고리별로 발송 된 제품의 합계를 표시합니다.Asp.Net의 AJAX 선형 차트

protected void ddlCategory_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string categoryName = ddlCategory.SelectedItem.ToString(); 
    string deliveryDate = ""; 
    decimal[] totalQuantity; 

    List<ProductPacking> catSumList = new List<ProductPacking>(); 
    for (int count = 0; count < catSumList.Count; count++) 
    { 
     deliveryDate = catSumList[count].deliveryDate; 
     totalQuantity = Convert.ToDecimal(catSumList[count].productQuantity); 
    } 
    lcCategory.Series.Add(new AjaxControlToolkit.LineChartSeries { Data = totalQuantity }); 
    lcCategory.CategoriesAxis = string.Join(",", deliveryDate); 
    lcCategory.ChartTitle = string.Format("", deliveryDate); 
    lcCategory.Visible = true; 
} 

및 비즈니스 로직 계층의 코드 :

public List<ProductPacking> getSumCategoryByMonth(string categoryName) 
{ 
    List<ProductPacking> ft = new List<ProductPacking>(); 
    ft = prodPack.getSumCategoryByMonth(categoryName); 
    return ft; 
} 

및 데이터 액세스 계층의 코드 다음은 프리젠 테이션 계층의 코드 그러나

public List<ProductPacking> getSumCategoryByMonth(string categoryName) 
{ 
    List<ProductPacking> ft = new List<ProductPacking>(); 

    using (var connection = new SqlConnection(FoodBankDB.connectionString)) 
    { 
     SqlCommand command = new SqlCommand("SELECT SUM(Convert(INT, ddi.productQuantity)) AS totalQuantity, pc.categoryName, d.deliveryDate FROM dbo.DistributionDistributedItems ddi " + 
      " INNER JOIN dbo.ProductVariants pv ON ddi.productVariant = pv.id " + 
      " INNER JOIN dbo.Products p ON pv.product = p.id " + 
      " INNER JOIN dbo.ProductCategories pc ON p.productCategory = pc.id " + 
      " INNER JOIN dbo.Distributions d ON ddi.distribution = d.id " + 
      " WHERE categoryName = '" + categoryName + "'" + 
      " GROUP BY pc.categoryName, d.deliveryDate", connection); 
     connection.Open(); 
     using (var dr = command.ExecuteReader()) 
     { 
      while (dr.Read()) 
      { 
       ft.Add(new ProductPacking(Convert.ToInt32(dr["totalQuantity"].ToString()), dr["deliveryDate"].ToString())); 
      } 
     } 
    } 
    return ft; 
} 

는,이있다 프레젠테이션 레이어 주변의 오류.

totalQuantity = Convert.ToDecimal(catSumList[count].productQuantity); 

행. 오류 메시지는 10 진수에서 10 진수로 암시 적으로 변환 할 수 없습니다. 나는이 웹 사이트에서 추천했다 : Line Chart In Asp.Net

나의 상황에 따라 이것을 고치는 방법을 궁금해. 미리 감사드립니다.

답변

1
당신이 catSumList 얻을 후 totalQuantity의 선언을 이동하고이로 변경

:

List<ProductPacking> catSumList = new List<ProductPacking>(); 
catSumList = BLL.getSumCategoryByMonth("Some Category"); 
decimal[] totalQuantity = new decimal[catSumList.Count]; 

다음 for 블록의 인덱스로 사용 totalQuantitycount의 값을 입력 :

for (int count = 0; count < catSumList.Count; count++) 
{ 
    deliveryDate = catSumList[count].deliveryDate; 
    totalQuantity[count] = Convert.ToDecimal(catSumList[count].productQuantity); 
} 
+0

감사합니다! 그것은 작동합니다! 그러나 코드 뒤에 선 색상을 변경하는 방법에 대한 아이디어가 있습니까? –

+0

죄송합니다. 전에 AJAX Line Chart를 사용 해본 적이 없지만 다음을 기반으로합니다 : http://www.asp.net/AjaxLibrary/AjaxControlToolkitSampleSite/LineChart/LineChart.aspx, 컨트롤에'BaseLineColor' 속성이 있습니까? – ekad