C# 将计数和数据作为json返回到extjs网格中
如何返回两个Json对象?基本上,我正在尝试从sql db发送一组数据以及数据库中的行数 下面的代码成功地发送了myData,但现在我还想发送count 这是我的网格C# 将计数和数据作为json返回到extjs网格中,c#,sql,asp.net-mvc,count,json,C#,Sql,Asp.net Mvc,Count,Json,如何返回两个Json对象?基本上,我正在尝试从sql db发送一组数据以及数据库中的行数 下面的代码成功地发送了myData,但现在我还想发送count 这是我的网格 this.grid = Ext.create('Ext.grid.Panel', { title: 'GridView App', frame: true, trackMouseOver: true, disableSelection: true, a
this.grid = Ext.create('Ext.grid.Panel', {
title: 'GridView App',
frame: true,
trackMouseOver: true,
disableSelection: true,
autoHeight: true,
store: store,
loadMask: true,
columns: [
{ header: 'Q1',
sortable: true, dataIndex: 'Q1'
},
{ header: 'Q2',
sortable: true, dataIndex: 'Q2'
},
{ header: 'Q3',
sortable: true, dataIndex: 'Q3'
},
{ header: 'Q4',
sortable: true, dataIndex: 'Q4'
},
{ header: 'Improvements', flex: 1,
sortable: true, dataIndex: 'Improvements'
},
{ header: 'Comments', flex: 1,
sortable: true, dataIndex: 'Comments'
}
],
这是我的商店
var store = Ext.create('Ext.data.JsonStore', {
storeId: 'myData',
scope: this,
pagesize: itemsPerPage,
remoteSort: true,
fields: [
{ name: 'Q1', type: 'int' },
{ name: 'Q2', type: 'int' },
{ name: 'Q3', type: 'int' },
{ name: 'Q4', type: 'int' },
{ name: 'Q5', type: 'int' },
{ name: 'Improvements', type: 'string' },
{ name: 'Comments', type: 'string' }
],
sorters: [
{
property: 'Q1',
direct: 'ASC'
}
],
proxy: {
type: 'ajax',
scope: this,
url: 'GridView/writeRecord',
reader: {
type: 'json',
root: 'myTable',
totalProperty: 'count'
}
}
});
我就是这样做的,我把它用于我所有的mvc应用程序。我在互联网上发现了这个例子,我稍微改变了一下,因为我现在在办公室,只在这里使用webforms,我知道。。。那很糟糕,当你去mvc的时候,你再也回不去了
public class Person
{
public string Name { get; set; }
public string Surname { get; set; }
}
public class HomeController : Controller
{
public List<Person> personList = new List<Person>{
new Person{ Name="Jpnh", Surname="Coco"},
new Person{ Name="Mike", Surname="Nile"}
};
public ActionResult Index()
{
return View();
}
public ActionResult GetData()
{
return Json(personList);
}
}
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$('#button').click(GetValue);
});
function GetValue() {
$.ajax({
url: "/Home/GetData",
success: function (data) {
alert(data[0].Name);
}
});
};
</script>
代码本身非常直观易懂,我假设您可以从数据库中填写一个通用列表
让我知道这基本上就是我在我的ASP.NET应用程序中如何做到的,我也在使用JSON.NET:
string sqlquery = "SELECT Q1, Q2, Q3, Q4, Improvements, Comments FROM myTable";
conn.Open();
SqlDataAdapter cmd = new SqlDataAdapter(sqlquery, conn);
SqlCommand comd = new SqlCommand(sqlquery, conn);
DataSet myData = new DataSet();
cmd.Fill(myData, "myTable");
comd.CommandText = "SELECT COUNT(*) FROM pid_FluSurvey";
Int32 count = (Int32)comd.ExecuteScalar();
comd.ExecuteNonQuery();
conn.Close();
return JsonConvert.SerializeObject( new { myTable = myData.Tables[0], count = count }, Formatting.Indented,
new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});
这里重要的是,您可以在任何匿名类型上调用SerializeObject,并在其中放置您想要/需要的任意数量的属性。等等,您是在控制器上这样做的吗?我通常通过Json将列表从控制器返回到视图,我只需键入return-JsontheList。我猜这是将数据集作为json重新存储,但您可能需要深入挖掘以从数据库中查找数据,因为它比简单的通用listHi Edwin更复杂。。。我正在使用json.net序列化。。。我有一个extjs gridview,它使用这个控制器。。。这是原帖。。。。。。。是的,它以json的形式返回我的数据集。。。但我肯定想试试你的建议。。。你能解释一下我是怎么做的吗谢谢你的回答。。。我在Json中得到了这两个值,但现在它创建了另一个列headerit创建了一个层。。。所以我的阅读器无法访问我的表。。。有解决方法吗?我还用我的store和grid方法更新了我的原始帖子,您可以看到我是如何从Json中提取数据的
string sqlquery = "SELECT Q1, Q2, Q3, Q4, Improvements, Comments FROM myTable";
conn.Open();
SqlDataAdapter cmd = new SqlDataAdapter(sqlquery, conn);
SqlCommand comd = new SqlCommand(sqlquery, conn);
DataSet myData = new DataSet();
cmd.Fill(myData, "myTable");
comd.CommandText = "SELECT COUNT(*) FROM pid_FluSurvey";
Int32 count = (Int32)comd.ExecuteScalar();
comd.ExecuteNonQuery();
conn.Close();
return JsonConvert.SerializeObject( new { myTable = myData.Tables[0], count = count }, Formatting.Indented,
new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});