السيطرة على الرسم البياني للChartArea متعددة، طاولة واحدة

StackOverflow https://stackoverflow.com/questions/1425952

  •  07-07-2019
  •  | 
  •  

سؤال

ولقد حصلت على جدول مع ثلاثة أعمدة، والأخيران مع القيم في نفوسهم. أحاول لإخراج اثنين من الرسوم البيانية الدائرية التي تظهر البيانات لكل واحد. لسبب ما، التخطيط الدائري الثاني هو عدم عرض، بدلا من ذلك انها قادمة على خط النار في ساحة الرمادي. بالإضافة إلى ذلك أسطورة يظهر مرتين متتاليتين، ولكن ليست سوى أسطورة واحدة التي لا معنى له بالنسبة لي.

إليك العلامات:

<asp:Chart Height="500" Width="500" ID="ClientModelChart" runat="server">
    <Series>
       <asp:Series ChartType="Pie" IsValueShownAsLabel="true" Name="PortfolioActual"></asp:Series>
       <asp:Series ChartType="Pie" IsValueShownAsLabel="true" Name="ModelActual"></asp:Series>
    </Series>
    <Legends>
       <asp:Legend Name="PortfolioActual"></asp:Legend>
       <asp:Legend Name="ModelActual"></asp:Legend>
    </Legends>
    <ChartAreas>
       <asp:ChartArea Area3DStyle-Enable3D="true" Area3DStyle-LightStyle="Realistic" Name="PortfolioActual"></asp:ChartArea>
       <asp:ChartArea Area3DStyle-Enable3D="true" Name="ModelActual"></asp:ChartArea>
    </ChartAreas>
</asp:Chart>

وبعد ذلك لقد حصلت على SqlDataAdapter تستخدم لملء DataSet، وبعد ذلك تحويل DataTableCollection إلى نوع قائمة IEnumerable حتى أتمكن من استخدامها عند ربط البيانات سلسلة الرسم البياني. يبدو شعر بعض الشيء، ولكن السبب أفعل هذا لأنه يتم استخدام DataSet لبعض الانتاج XSLT في وقت لاحق، لذلك ليس هناك نقطة إعادة الاستعلام-قاعدة البيانات عندما كنت قد حصلت بالفعل على بيانات أحتاج / تريد.

Dim sectorList As IList = CType(ds.Tables(1), IListSource).GetList()

ClientModelChart.Series("PortfolioActual").Points.DataBind(sectorList, "Sector", "Model", Nothing)
ClientModelChart.Series("ModelActual").Points.DataBind(sectorList, "Sector", "Client", Nothing)

وحتى التخطيط الدائري الثاني (ModelActual) لا تعرض على الاطلاق، انها مجرد مربع رمادي. لقد تم تافه لساعات مع عدم وجود جدوى. (تحرير: أيضا، لقد فعلت شيئا من هذا القبيل لذلك أنا لا أعرف لماذا هذا واحد لا يعمل الفارق مع بلدي الآخر هو أنه جاء من مجموعتين منفصلتين من البيانات في البداية، ولكن هذا لا ينبغي أن يكون السبب أنها لا تعمل)

وشكرا.

هل كانت مفيدة؟

المحلول

حسنا، وقضيت الصباح على ذلك بغباء، لكني حل جميع المشاكل. تم حل هذه المسألة مع أسطورة لأنك بحاجة لتحديد أسطورة ضد سلسلة مثل ذلك:

      <asp:Chart Height="500" Width="500" ID="ClientModelChart" runat="server">
        <Legends>
          <asp:Legend Name="PortfolioActual"></asp:Legend>
          <asp:Legend Enabled="false" Name="ModelActual"></asp:Legend>
        </Legends>
        <Series>
          <asp:Series ChartType="Pie" Legend="PortfolioActual" ChartArea="PortfolioActual" IsValueShownAsLabel="true" Name="PortfolioActual"></asp:Series>
          <asp:Series ChartType="Pie" Legend="ModelActual" ChartArea="ModelActual" IsValueShownAsLabel="true" Name="ModelActual"></asp:Series>
        </Series>
        <ChartAreas>
          <asp:ChartArea Area3DStyle-Enable3D="true" Area3DStyle-LightStyle="Realistic" Name="PortfolioActual"></asp:ChartArea>
          <asp:ChartArea Area3DStyle-Enable3D="true" Area3DStyle-LightStyle="Realistic" Name="ModelActual"></asp:ChartArea>
        </ChartAreas>
      </asp:Chart>

ووملزمة ينبغي أن يتم البيانات مثل هذا بدلا من ذلك:

Dim sectorList As IList = CType(ds.Tables(1), IListSource).GetList()

ClientModelChart.Series("PortfolioActual").Points.DataBindXY(sectorList, "Sector", sectorList, "Model")
ClientModelChart.Series("ModelActual").Points.DataBindXY(sectorList, "Sector", sectorList, "Client")
ClientModelChart.Series("PortfolioActual")("PieLabelStyle") = "Outside"
ClientModelChart.Series("ModelActual")("PieLabelStyle") = "Outside"

وحصلت هناك في نهاية المطاف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top