C# 来自控制器的数据未提取到MVC中的Jquery数据表中(未使用实体框架)
查找下面的代码,并帮助我找出哪里出了问题,因为数据没有进入jQuery Datatable(数据仅以JSON格式显示) 步骤:1创建Datatbase访问层,然后创建一个名为Db2的类C# 来自控制器的数据未提取到MVC中的Jquery数据表中(未使用实体框架),c#,asp.net-mvc,stored-procedures,datatables,C#,Asp.net Mvc,Stored Procedures,Datatables,查找下面的代码,并帮助我找出哪里出了问题,因为数据没有进入jQuery Datatable(数据仅以JSON格式显示) 步骤:1创建Datatbase访问层,然后创建一个名为Db2的类 public class Db2 { SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
public class Db2
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
public DataSet show_data()
{
SqlCommand com = new SqlCommand("SP_Company_All", con);
com.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
步骤:2创建空控制器,并按照以下步骤编码
public class Company1Controller : Controller
{
Database_Access_layer.Db2 db2layer = new Database_Access_layer.Db2();
// GET: Company1
public ActionResult Index()
{
return View();
}
public JsonResult get_data()
{
DataSet ds = db2layer.show_data();
List<Company1> listcomp = new List<Company1>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
listcomp.Add(new Company1
{
CompanyID = Convert.ToInt32(dr["CompanyID"]),
CompanyName = dr["CompanyName"].ToString(),
CompanyCode = dr["CompanyCode"].ToString(),
Wecare_companyId = Convert.ToInt32(dr["Wecare_companyId"]),
LicenseCount = Convert.ToInt32(dr["LicenseCount"]),
active = Convert.ToBoolean(dr["active"]),
ModifiedBy = Convert.ToInt32(dr["ModifiedBy"]),
Lastmodifiedon = Convert.ToDateTime(dr["Lastmodifiedon"])
});
}
var data = listcomp;
return Json(listcomp, JsonRequestBehavior.AllowGet);
}
}
公共类公司1控制器:控制器
{
Database_Access_layer.Db2 db2layer=新数据库_Access_layer.Db2();
//获得:公司1
公共行动结果索引()
{
返回视图();
}
公共JsonResult获取_数据()
{
数据集ds=db2layer.show_data();
List listcomp=新列表();
foreach(ds.Tables[0].行中的数据行dr)
{
上市公司新增(新公司1)
{
CompanyID=转换为32(dr[“CompanyID”),
CompanyName=dr[“CompanyName”].ToString(),
CompanyCode=dr[“CompanyCode”].ToString(),
Wecare_companyId=转换为32(dr[“Wecare_companyId”),
LicenseCount=Convert.ToInt32(dr[“LicenseCount”]),
active=Convert.ToBoolean(dr[“active”]),
ModifiedBy=Convert.ToInt32(dr[“ModifiedBy”]),
Lastmodifiedon=Convert.ToDateTime(dr[“Lastmodifiedon”])
});
}
var数据=listcomp;
返回Json(listcomp,JsonRequestBehavior.AllowGet);
}
}
第三步:那么视图部分应该是
@{
ViewBag.Title = "Company1 Page";
Layout = null;
}
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<!-- CDN LINKS-->
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/4.3.1/cerulean/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.19/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
</head>
<body>
<div class="jumbotron">
<h1>DataTable Example</h1>
<p class="lead">A project dedicated to data table example in MVC</p>
</div>
<br />
<center>
<div style="width: auto; border: 1px solid black; padding: 3px" ;>
<table id="dataTable">
<thead>
<tr>
<th>CompanyID</th>
<th>CompanyName</th>
<th>CompanyCode</th>
<th>WeCareCompanyID</th>
<th>LicenseCount</th>
<th>Active</th>
<th>ModifiedBy</th>
<th>LastModifiedOn</th>
</tr>
</thead>
</table>
</div>
</center>
----- Scripting Part be like
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
"url": "@Url.Action("get_data", "Company1")",
"method": "post",
"dataType" : "json",
success: function (data) {
$('#dataTable').DataTable({
paging: true,
sort: true,
searching: true,
scrollY: 200,
data:data,
columns: [
{ 'data': 'CompanyID'},
{ 'data': 'CompanyName' },
{ 'data': 'CompanyCode' },
{ 'data': 'Wecare_companyId' },
{ 'data': 'LicenseCount' },
{ 'data': 'active' },
{ 'data': 'ModifiedBy' },
{ 'data': 'Lastmodifiedon'}
]
});
}
});
});
</script>
</body>
</html>
}
Here is a code of database access layer, controller and view too but data is not displaying in Datatable. Tried in Multiple ways.But No Luck
@{
ViewBag.Title=“公司1页”;
布局=空;
}
指数
数据表示例
一个致力于MVC中数据表示例的项目
公司ID
公司名称
公司代码
Wecare公司
持牌人人数
活跃的
修改
拉斯顿
-----脚本部分可能是这样的
$(文档).ready(函数(){
$.ajax({
“url”:“@url.Action(“获取数据”,“公司1”)”,
“方法”:“发布”,
“数据类型”:“json”,
成功:功能(数据){
$('#dataTable')。dataTable({
是的,
排序:对,
搜索:是的,
卷轴:200,
数据:数据,
栏目:[
{'data':'CompanyID'},
{'data':'CompanyName'},
{'data':'CompanyCode'},
{'data':'Wecare_companyId'},
{“数据”:“LicenseCount”},
{'data':'active'},
{'data':'ModifiedBy'},
{'data':'Lastmodifiedon'}
]
});
}
});
});
}
下面是数据库访问层、控制器和视图的代码,但数据未显示在Datatable中。尝试了多种方法,但没有运气
好的,我已经针对您的问题设置了一个示例工作存储库。您可以克隆此存储库并使用它。我已经硬编码了你的列表comp=新列表()
具有预定义值,但假设数据库中的数据与我的硬编码值相似
我向您展示了相关的模型
、视图
和控制器
代码以及应用程序的示例输出
请注意,我正在为您的js
和css
文件使用CDN链接:
您的型号将如下所示:
using System;
namespace DataTablesExample
{
public class Company1
{
public int CompanyID { get; set; }
public string CompanyName { get; set; }
public string CompanyCode { get; set; }
public int Wecare_companyId { get; set; }
public int LicenseCount { get; set; }
public bool active { get; set; }
public int ModifiedBy { get; set; }
public DateTime Lastmodifiedon { get; set; }
//Adding a string datetime since it is easier to manipulate in backend
public string Lastmodifiedonstring { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace DataTablesExample.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public JsonResult get_date()
{
List<Company1> listcomp = new List<Company1>();
//This is how you are setting your company list. I will show you a basic example by adding hardcoded values
//DataSet ds = db2layer.show_data();
//foreach (DataRow dr in ds.Tables[0].Rows)
//{
// listcomp.Add(new Company1
// {
// CompanyID = Convert.ToInt32(dr["CompanyID"]),
// CompanyName = dr["CompanyName"].ToString(),
// CompanyCode = dr["CompanyCode"].ToString(),
// Wecare_companyId = Convert.ToInt32(dr["Wecare_companyId"]),
// LicenseCount = Convert.ToInt32(dr["LicenseCount"]),
// active = Convert.ToBoolean(dr["active"]),
// ModifiedBy = Convert.ToInt32(dr["ModifiedBy"]),
// Lastmodifiedon = Convert.ToDateTime(dr["Lastmodifiedon"])
// });
//}
listcomp.Add(new Company1
{
CompanyID = 1,
CompanyName = "Company 1",
CompanyCode = "C1",
Wecare_companyId = 1,
LicenseCount = 1,
active = true,
ModifiedBy = 1,
Lastmodifiedon = DateTime.Now,
Lastmodifiedonstring = DateTime.Now.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
});
listcomp.Add(new Company1
{
CompanyID = 2,
CompanyName = "Company 2",
CompanyCode = "C2",
Wecare_companyId = 2,
LicenseCount = 2,
active = true,
ModifiedBy = 1,
Lastmodifiedon = DateTime.Now,
Lastmodifiedonstring = DateTime.Now.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
});
listcomp.Add(new Company1
{
CompanyID = 3,
CompanyName = "Company 3",
CompanyCode = "C3",
Wecare_companyId = 1,
LicenseCount = 3,
active = true,
ModifiedBy = 1,
Lastmodifiedon = DateTime.Now,
Lastmodifiedonstring= DateTime.Now.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
});
var data = listcomp;
return Json(listcomp, JsonRequestBehavior.AllowGet);
}
}
}
@{
ViewBag.Title = "Home Page";
Layout = null;
}
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
@*<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<script src="~/Scripts/jquery-3.4.1.js"></script>
<link href="~/Content/bootstrap4.min.css" rel="stylesheet" />
<script src="~/Scripts/DataTables/jquery.dataTables.min.js"></script>
<script src="~/Scripts/DataTables/dataTables.bootstrap4.min.js"></script>*@
<!-- CDN LINKS-->
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/4.3.1/cerulean/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.19/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
</head>
<body>
<div class="jumbotron">
<h1>DataTable Example</h1>
<p class="lead">A project dedicated to data table example in MVC</p>
</div>
<br />
<center>
<div style="width: auto; border: 1px solid black; padding: 3px" ;>
<table id="dataTable">
<thead>
<tr>
<th>Company ID</th>
<th>Company Name</th>
<th>Company Code</th>
<th>WeCare Company ID</th>
<th>License Count</th>
<th>Active</th>
<th>Modified By</th>
<th>Last Modified On</th>
<th>Last Modified On Server String</th>
</tr>
</thead>
</table>
</div>
</center>
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
"url": "@Url.Action("get_date", "Home")",
"method": "post",
"dataType" : "json",
success: function (data) {
$('#dataTable').DataTable({
paging: true,
sort: true,
searching: true,
scrollY: 200,
data:data,
columns: [
{ 'data': 'CompanyID'},
{ 'data': 'CompanyName' },
{ 'data': 'CompanyCode' },
{ 'data': 'Wecare_companyId' },
{ 'data': 'LicenseCount' },
{ 'data': 'active' },
{ 'data': 'ModifiedBy' },
{
'data': 'Lastmodifiedon'
//'render': function (jsonDate) {
// var date = new Date(parseInt(jsonDate.substr(13)));
// var month = date.getMonth() + 1;
// return month + "/" + date.getDate() + "/" + date.getFullYear();
//}
},
{ 'data': 'Lastmodifiedonstring' }
]
});
}
});
});
</script>
</body>
</html>
您的控制器将如下所示:
using System;
namespace DataTablesExample
{
public class Company1
{
public int CompanyID { get; set; }
public string CompanyName { get; set; }
public string CompanyCode { get; set; }
public int Wecare_companyId { get; set; }
public int LicenseCount { get; set; }
public bool active { get; set; }
public int ModifiedBy { get; set; }
public DateTime Lastmodifiedon { get; set; }
//Adding a string datetime since it is easier to manipulate in backend
public string Lastmodifiedonstring { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace DataTablesExample.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public JsonResult get_date()
{
List<Company1> listcomp = new List<Company1>();
//This is how you are setting your company list. I will show you a basic example by adding hardcoded values
//DataSet ds = db2layer.show_data();
//foreach (DataRow dr in ds.Tables[0].Rows)
//{
// listcomp.Add(new Company1
// {
// CompanyID = Convert.ToInt32(dr["CompanyID"]),
// CompanyName = dr["CompanyName"].ToString(),
// CompanyCode = dr["CompanyCode"].ToString(),
// Wecare_companyId = Convert.ToInt32(dr["Wecare_companyId"]),
// LicenseCount = Convert.ToInt32(dr["LicenseCount"]),
// active = Convert.ToBoolean(dr["active"]),
// ModifiedBy = Convert.ToInt32(dr["ModifiedBy"]),
// Lastmodifiedon = Convert.ToDateTime(dr["Lastmodifiedon"])
// });
//}
listcomp.Add(new Company1
{
CompanyID = 1,
CompanyName = "Company 1",
CompanyCode = "C1",
Wecare_companyId = 1,
LicenseCount = 1,
active = true,
ModifiedBy = 1,
Lastmodifiedon = DateTime.Now,
Lastmodifiedonstring = DateTime.Now.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
});
listcomp.Add(new Company1
{
CompanyID = 2,
CompanyName = "Company 2",
CompanyCode = "C2",
Wecare_companyId = 2,
LicenseCount = 2,
active = true,
ModifiedBy = 1,
Lastmodifiedon = DateTime.Now,
Lastmodifiedonstring = DateTime.Now.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
});
listcomp.Add(new Company1
{
CompanyID = 3,
CompanyName = "Company 3",
CompanyCode = "C3",
Wecare_companyId = 1,
LicenseCount = 3,
active = true,
ModifiedBy = 1,
Lastmodifiedon = DateTime.Now,
Lastmodifiedonstring= DateTime.Now.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
});
var data = listcomp;
return Json(listcomp, JsonRequestBehavior.AllowGet);
}
}
}
@{
ViewBag.Title = "Home Page";
Layout = null;
}
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
@*<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<script src="~/Scripts/jquery-3.4.1.js"></script>
<link href="~/Content/bootstrap4.min.css" rel="stylesheet" />
<script src="~/Scripts/DataTables/jquery.dataTables.min.js"></script>
<script src="~/Scripts/DataTables/dataTables.bootstrap4.min.js"></script>*@
<!-- CDN LINKS-->
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/4.3.1/cerulean/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.19/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
</head>
<body>
<div class="jumbotron">
<h1>DataTable Example</h1>
<p class="lead">A project dedicated to data table example in MVC</p>
</div>
<br />
<center>
<div style="width: auto; border: 1px solid black; padding: 3px" ;>
<table id="dataTable">
<thead>
<tr>
<th>Company ID</th>
<th>Company Name</th>
<th>Company Code</th>
<th>WeCare Company ID</th>
<th>License Count</th>
<th>Active</th>
<th>Modified By</th>
<th>Last Modified On</th>
<th>Last Modified On Server String</th>
</tr>
</thead>
</table>
</div>
</center>
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
"url": "@Url.Action("get_date", "Home")",
"method": "post",
"dataType" : "json",
success: function (data) {
$('#dataTable').DataTable({
paging: true,
sort: true,
searching: true,
scrollY: 200,
data:data,
columns: [
{ 'data': 'CompanyID'},
{ 'data': 'CompanyName' },
{ 'data': 'CompanyCode' },
{ 'data': 'Wecare_companyId' },
{ 'data': 'LicenseCount' },
{ 'data': 'active' },
{ 'data': 'ModifiedBy' },
{
'data': 'Lastmodifiedon'
//'render': function (jsonDate) {
// var date = new Date(parseInt(jsonDate.substr(13)));
// var month = date.getMonth() + 1;
// return month + "/" + date.getDate() + "/" + date.getFullYear();
//}
},
{ 'data': 'Lastmodifiedonstring' }
]
});
}
});
});
</script>
</body>
</html>
应用程序的示例输出:
如果您注意到输出中的最后两个字段,您将看到一个字段是从模型发送的未格式化的DateTime
字段,另一个字段是格式化的DateTime
字段到Date
字符串。这是因为数据表需要一个Date
字段来显示值。这里有两个选项:
您可以将控制器
方法中的日期时间
字段转换为格式化的日期
字符串,并将其发送到视图
。这就是我正在做的事情,也是输出的最后一个字段(服务器字符串上最后一次修改)。我更喜欢这种方法,因为C#提供了有效的方法,可以将日期时间
格式化为日期
,格式符合您的要求
另一个选项是将日期时间
值发送到数据表
,并根据需要对其进行格式化。我还没有尝试过这种方法,但我觉得它可能会导致潜在的问题,在渲染您的价值
我希望这对你有帮助
干杯 好的,我已经设置了一个示例工作报告