【问题标题】:Add javascript chart to gridview?将javascript图表添加到gridview?
【发布时间】:2019-02-02 06:24:45
【问题描述】:

我已经进行了几次搜索,但没有找到任何可以帮助我的东西。

我有一个显示以下数据的简单网格视图:Sales.SalesTotalSales.Company。这很好用。

现在的问题是我需要在此 gridview 的每一行中添加一个 javascript 图表。类似于to this example

此 javascript 图表填充了 WCF 服务,该服务使用公司名称(已在 gridviewSqlDataSource 中)作为参数。 WCF 调用如下所示:http://43.32.54.23/SalesWcf.svc/GetSales/Company 其中 company 是网格视图中的公司名称。

问题是我不知道如何解决这个问题。这是我的gridview,很简单:

    <asp:GridView
        id="GridView_sales" runat="server" AutoGenerateColumns="false" DataSourceID="SqlDataSourceSales">
        <Columns>
            <asp:BoundField DataField="Company" HeaderText="Company" ReadOnly="True">
                <headerStyle Width="50" Font-Names="calibri"/>
                <ItemStyle Font-Names="calibri" HorizontalAlign="Center"/>
            </asp:BoundField>
            <asp:BoundField DataField="SalesTotal" HeaderText="SalesTotal" ReadOnly="True" >
                <headerStyle Width="60" Font-Names="calibri" ForeColor="#ffffff"/>
                <ItemStyle Wrap="True" Font-Names="calibri"/>
            </asp:BoundField>
            <**** Where javascript chart goes, invoked with http://43.32.54.23/SalesWcf.svc/GetSales/Company ****/>
        </Columns>
    </asp:GridView>    
    <asp:SqlDataSource id="SqlDataSourceSales" runat="server"
        ConnectionString="Data Source=SERVER;Initial Catalog=DB;Persist Security Info=True;..."
        SelectCommand="SELECT SalesTotal, Company from Sales">
    </asp:SqlDataSource>    

感谢任何帮助。

编辑:

这是我的 amcharts 图表的样子:

var chart = AmCharts.makeChart("DivSalesChart", {
    "type": "serial",
    "theme": "light",
    "valueAxes": [{
        "id": "v1"
    }],
    "graphs": [
    {
        "id": "Company",
        "valueField": "sales_num"
    }],
    "categoryField": "month_name",
    "dataLoader": {
      "url": "http://43.32.54.23/SalesWcf.svc/GetSales",
      "format": "json"
    }
});

【问题讨论】:

    标签: javascript c# asp.net gridview amcharts


    【解决方案1】:

    添加一个用于渲染图表持有者 div 的模板字段,其属性 data-companyId 用于保存 companyId:

    <asp:TemplateField>
      <ItemTemplate>
            <div class="salesChart" data-company='<%# Eval("Company")%>'></div>
      </ItemTemplate>
    </asp:TemplateField>
    

    添加 Jquery 代码以查找所有具有 css 类 salesChart 的 div,然后通过 ajax 调用 WCF 服务获取销售数据,公司名称从 data-company 属性中获取。最后在chartContainerdiv上的ajax调用发起图成功回调

     $(function(){
            $('.salesChart').each(function(index, chartContainer){
                varcompanyName=$(chartContainer).attr('data-company');
    
                 AmCharts.makeChart(chartContainer,
                 {
                    "type": "serial",
                    "theme": "light",
                    "valueAxes": [{
                        "id": "v1"
                    }],
                    "graphs": [{
                        "id": "Company",
                        "valueField": "sales_num"
                    }],
                    "categoryField": "month_name",
                    "dataLoader": {
                        "url": "http://43.32.54.23/SalesWcf.svc/GetSales/"+ companyName,
                        "format": "json"
                    }
                });
            });
        });
    

    【讨论】:

    • 感谢您的建议。我编辑了问题以显示图表代码。这如何在您的示例中实现?
    猜你喜欢
    • 2021-06-05
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    相关资源
    最近更新 更多