我对C#MVC还是很陌生,如果您能帮助我或者至少给我一个解决方法的想法,将不胜感激。因此,我有这种方法可以从数据库中过滤掉一些信息并返回一个列表(System.Collections.Generic.List`1 [Users.AspNetUser])。
private static AspNetUser PopulateModel(string country, [Optional]int Agefrom, [Optional] int Ageto)
{
using (DBEntities entities = DBEntities()) //using ADOnet DB
{
AspNetUser model = new AspNetUser()
{
WebUsers = (from c in entities.AspNetUsers
where c.Country == country || string.IsNullOrEmpty(country)
where c.AgeofUser >= Agefrom && c.AgeofUser <= Ageto || string.IsNullOrEmpty(Agefrom.ToString()) || string.IsNullOrEmpty(Ageto.ToString())
select c).ToList(),
Countries = (from c in entities.AspNetUsers
select new SelectListItem { Text = c.Country, Value = c.Country }).Distinct().ToList(),
Ages = (from c in entities.AspNetUsers
select c.AgeofUser)
};
return model;
}
}
之后,我试图显示过滤出的信息中的图表,但是googlecharts要求我提供一个数组或一个数据表来链接我的数据。我的问题是我找不到将列表转换为DT或数组的方法。我会把脚本留给您以防万一。
<script>
google.charts.load('current', { 'packages': ['table'] });
google.charts.setOnLoadCallback(drawTable);
function drawTable() {
//here google asks for data in a DT or array with the method arraytotable()
var data = new google.visualization.DataTable(@Model.WebUsers);//here I get "Uncaught SyntaxError: Unexpected end of input" for the bad input
data.addColumn('string', 'Department');
data.addColumn('number', 'Revenues');
data.addRows(data1);
var table = new google.visualization.Table(document.getElementById('table_div'));
table.draw(data, { showRowNumber: true, width: '100%', height: '100%' });
}
谢谢!
查看您的代码,
您使用了错误的格式来初始化visualizationDataTable和
您只需要WebUser,因为它已经包含所有记录。
这里有2个选项:
您可以在控制器中更改模型以使用正确的格式,如https://developers.google.com/chart/interactive/docs/reference所示。您可以使用.toJson / JSONStringify或.toArray()
或更简单的选择,使用空的初始化程序并使用Webusers记录创建变量行。修改脚本以使用下面的代码;
function drawTable() {
// create row variable, replace u.Name with a string property from your model
var rows = [
@{
foreach(var u in Model.WebUsers){
<text>['@u.Name',@u.AgeofUser],</text>
}
}
]
// use empty initializer
var data = new google.visualization.DataTable();
// add your columns
data.addColumn('string', 'Name');
data.addColumn('number', 'Age');
// add the row variable earlier
data.addRows(rows);
var table = new google.visualization.Table(document.getElementById('table_div'));
table.draw(data, { showRowNumber: true, width: '100%', height: '100%' });
}