Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从SQL Server数据库加载到DataTable并在MVC3中显示图表_Sql_Asp.net Mvc 3_Datatable_Ef Code First_Poco - Fatal编程技术网

将数据从SQL Server数据库加载到DataTable并在MVC3中显示图表

将数据从SQL Server数据库加载到DataTable并在MVC3中显示图表,sql,asp.net-mvc-3,datatable,ef-code-first,poco,Sql,Asp.net Mvc 3,Datatable,Ef Code First,Poco,我对MVC和一般编程非常陌生,并且在将数据从SQL Server数据库加载到MVC3应用程序时遇到了问题。我无法让它与模型一起工作,所以我只有一个控制器和一个视图。代码如下所示: Request_Id System.Data.SqlClient.SqlCommand 控制器: public ActionResult Datatable() { string conn = System.Configuration.ConfigurationManager.Connection

我对MVC和一般编程非常陌生,并且在将数据从SQL Server数据库加载到MVC3应用程序时遇到了问题。我无法让它与模型一起工作,所以我只有一个控制器和一个视图。代码如下所示:

Request_Id      
System.Data.SqlClient.SqlCommand
控制器:

public ActionResult Datatable()
{
    string conn = System.Configuration.ConfigurationManager.ConnectionStrings["SampleDBConn"].ToString();
    SqlConnection connect = new SqlConnection(conn);
    connect.Open();

    SqlCommand RID = new SqlCommand("SELECT Request_ID FROM SampleDB.dbo.Transactions", connect);
    SqlCommand Tdate = new SqlCommand("SELECT Trans_Date FROM SampleDB.dbo.Transactions", connect);
    SqlCommand MID = new SqlCommand("SELECT Merchant_ID FROM SampleDB.dbo.Transactions", connect);
    SqlCommand Ttype = new SqlCommand("SELECT Trans_Type FROM SampleDB.dbo.Transactions", connect);
    SqlCommand Tamt = new SqlCommand("SELECT Total_Amt FROM SampleDB.dbo.Transactions", connect);

    DataTable dt = new DataTable("MyTable");
    dt.Columns.Add(new DataColumn("Request_ID", typeof(SqlCommand)));
    dt.Columns.Add(new DataColumn("Trans_Date", typeof(SqlCommand)));
    dt.Columns.Add(new DataColumn("Merchant_ID", typeof(SqlCommand)));
    dt.Columns.Add(new DataColumn("Trans_Type", typeof(SqlCommand)));
    dt.Columns.Add(new DataColumn("Total_Amt", typeof(SqlCommand)));

        DataRow row = dt.NewRow();
        row["Request_ID"] = RID;
        row["Trans_Date"] = Tdate;
        row["Merchant_ID"] = MID;
        row["Trans_Type"] = Ttype;
        row["Total_Amt"] = Tamt;
        dt.Rows.Add(row);

    connect.Close();
    return View(dt);
}
     public ActionResult Browse(string Merchant)
    {
        var mercmodel = sampledb.Merchants.Include("Transactions")
            .SingleOrDefault(g => g.Merchant == Merchant);
        return View(mercmodel);
    }
视图:

其中“Request_Id”是列标题,“System.Data.SqlClient.SqlCommand”是数据应该位于的位置

我从另一个stackoverflow解决方案中使用了此方法:

我的应用程序的最终目标是通过复选框或下拉列表动态查询我的数据库以显示图表,并且我还需要能够将数据导出到excel文件。如果有人对我应该如何处理这个问题有任何想法或建议,我们将不胜感激

我已经能够使用存储过程通过以下方法静态创建图表:

    @{
        ViewBag.Title = "Chart1"; 
     }

    < h2 >Chart1< /h2 >
    @{
          var db = Database.Open("SampleDBConn");
          var dbdata = db.Query("August2012byMerch");

          var myChart = new Chart(width: 1100, height: 600, theme: ChartTheme.Green)
          .AddTitle("Merchant Totals by Transaction Type: August 2012")
          .AddSeries("Default",
           xValue: dbdata, xField: "Transaction Type",
           yValues: dbdata, yFields: "Total")
           .Write();
           db.Close();
       }
@{
ViewBag.Title=“Chart1”;
}

图表1

@{ var db=Database.Open(“SampleDBConn”); var dbdata=db.Query(“August2012byMerch”); var myChart=新图表(宽度:1100,高度:600,主题:ChartTheme.Green) .AddTitle(“按交易类型划分的商户总数:2012年8月”) .AddSeries(“默认值”, xValue:dbdata,xField:“事务类型”, Y值:dbdata,Y字段:“总计”) .Write(); db.Close(); }

谢谢大家!

我找到了一个解决方案,在DataTable方面对我很有效

根据Kevin在评论部分的建议,我使用了一个POCO模型,并采用了实体框架代码优先设计。 此外,研究还让我在这里找到了一个很棒的教程->

我根据本教程建立了我的模型,然后稍作修改以满足我的需要

模型如下:

    namespace Example_1.Models
    {
        public class Transaction
        {
            [Key]
            public int TID { get; set; }
            public DateTime TDate { get; set; }   
            public decimal TAmt { get; set; }
            public string Trans_Type { get; set; }
            public int MID { get; set; }
        }
    }

    namespace Example_1.Models
    {
         public class Merchants
         {
            [Key]
            public int MID { get; set; }
            public string Merchant { get; set; }
            public List<Transaction> Transactions { get; set; }
         }
    }
    namespace Example_1.Models
    {
        public class SampleDBEntities : DbContext
        {
            public DbSet<Transaction> Transactions { get; set; }
            public DbSet<Merchants> Merchants { get; set; }
        }
    }
Merchant变量必须与URL中的路径匹配。例如,我的URL是 “”

然后在视图中,我构建了一个表,在其中我将数据传递到:

    <script src="@Url.Content("~/Scripts/sorttable.js")" type="text/javascript">   </script>


   @model Example_1.Models.Merchants

    @{
        ViewBag.Title = "Browse";
    }


    <h2>Browse</h2>

      <h3>Transactions: @Model.Merchant</h3>
     <table class="sortable">
     <tr>
     <th>ID</th>
     <th>Date</th>
     <th>Merchant</th>
     <th>Amount</th>
     </tr>
        @foreach (var transaction in Model.Transactions)
         {
            <tr>
              <td>
                @transaction.TID
             </td>
             <td>
               @transaction.TDate
             </td>
             <td>
               @transaction.Trans_Type
             </td>
             <td>
               $@transaction.TAmt
            </td>
          </tr>
        }
     </table>

@模型示例_1.Models.Merchants
@{
ViewBag.Title=“浏览”;
}
浏览
交易:@Model.Merchant
身份证件
日期
商人
数量
@foreach(Model.Transactions中的var事务)
{
@交易记录
@交易日期
@transaction.Trans_类型
$@transaction.TAmt
}
这将显示一个漂亮的表,如下所示:

Request_Id      
System.Data.SqlClient.SqlCommand

在我看来,我认为你应该试着从0开始理解框架。@Jorge我得到了框架。构建一个处理数据的模型,然后使用控制器作为编排器将模型传递给视图。然后视图显示数据。我刚刚在为这个构建模型时遇到了麻烦,所以我正在尝试一种动手的方法来了解什么是可以做的,什么是不可以做的,特别是你的模型是一个简单的POCO。我将添加一个数据层(查看存储库和工作单元设计模式),以返回您将在模型中使用的POCO,而不是尝试使用DataTable作为您的模型。EF在这方面做得很好。@KevinJunghans谢谢!我去看看