2016-11-10 15 views
0

linqdatasourceに代入するためにOn_Selectingイベントを使用しようとしていますが、linqdatasourceがチャートにデータを供給するために使用されています。イベントが発生すると、e.Resultはnull参照例外をスローします。私はこれを理解することができませんでした。助けてください。e.Result throwing nullreferenceexception

まず、LinqDataSourceコントロールとグラフのコード:

<asp:Chart ID="MonthlyChart" 
      runat="server" 
      DataSourceID="LinqGetChartData"> 
    <series> 
     <asp:Series Label="#VALX, #VALY" 
        ChartType="Pie" 
        Name="Series1" 
        XValueMember="CostSum" 
        YValueMembers="SalesMonth"></asp:Series> 
    </series> 
    <chartareas> 
     <asp:ChartArea Name="ChartArea1"> 
      <AxisY Title="Sales Month"> 
       <LabelStyle Format="MMMM" /> 
      </AxisY> 
      <AxisX Title="Total"></AxisX> 
      <Area3DStyle Enable3D="True" 
         WallWidth="10"></Area3DStyle> 
     </asp:ChartArea> 
    </chartareas> 
</asp:Chart> 
<asp:LinqDataSource ID="LinqGetChartData" 
        runat="server" 
        ContextTypeName="MegaChallengePapaBobsPizza.Persistence.CustomerEntities" 
        EntityTypeName="" 
        OnSelecting="LinqGetChartData_Selecting" 
        TableName="Customers"></asp:LinqDataSource> 

次に、On_Selectingイベントのコード:最後

protected void LinqGetChartData_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
    var customerList = Domain.CustomerManager.GetCustomers(); 
    var query = customerList.OrderBy(c => c.OrderDate) 
          .GroupBy(c => c.OrderDate.ToString("MMMM"), 
          (c => c.Cost), 
          (groupKey, totCost) => new SalesResult() 
          { 
           SalesMonth = groupKey, 
           CostSum = totCost.Sum() 
          }); 
    e.Result = query; 
} 

、イベントを発生させたコード:

LinqGetChartData_Selecting(sender, e as LinqDataSourceSelectEventArgs); 

ご協力いただければ幸いです。ありがとう。

+0

eがLinqDataSourceSelectEventArgs型のオブジェクトではないように見えます。 LinqGetChartData_Selectingはどこから呼び出されましたか? – H77

+0

Page_Loadから呼び出されました –

+0

@DwightMendozaなぜPage_Loadから呼び出すのですか?イベントハンドラはaspに割り当てられているので、必要はありません。 – H77

答えて

0

Page_Loadイベントでイベントハンドラを呼び出すので、使用している変数 "e"はPage_LoadイベントのEventArgsパラメータであると仮定します。このパラメータは、LinqDataSourceSelectEventArgs型ではないため、次のnullが戻されます。

e as LinqDataSourceSelectEventArgs 

nullのプロパティ "Result"にアクセスしようとすると、null参照例外がスローされます。

特別な理由がない限り、イベントハンドラがLinqDataSourceオブジェクトにaspコードで割り当てられているので、Page_Load内で再度呼び出す必要はありません。

+0

私はPage_Loadから取り出しましたが、現在はnull参照は取得されませんが、円グラフは表示されません。何か案は? –

+0

Page_Loadの背後にあるコードのチャート上でdatabindを呼び出してみてください。 – H77

+0

それは動作しませんでした。 –

関連する問題