0
我嘗試使用一個answered question和an article來填充webgrid,但我無法重複所有行的值。所有行的值都與其他值相同。我一直在調試以解決這個奇怪的問題。但我不能:如何解決expando奇怪的行爲來填充mvc3 webgrid?
public class MyViewModel
{
public IEnumerable<string> Columns { get; set; }
public IEnumerable<dynamic> Values { get; set; }
public bool HasNext { get; set; }
public bool HasPrevious { get; set; }
}
public class JobController : Controller
{
public ActionResult Index(int? page)
{
ViewData["Customers"] = new SelectList(CustomerOperation.GetCustomers().Items, "Id", "Name", null);
ViewData["Jobs"] = new SelectList(JobOperation.GetCustomersAssemblyList().Items, "scheduleId", "name", null);
const int pageSize = 10;
ViewBag.CurrentPage = (page ?? 0);
if (Session["CustomerId"]!=null && Session["ScheduleId"]!=null)
{
int customerId = ConvertUtil.ToInt(Session["CustomerId"]);
int scheduleId = ConvertUtil.ToInt(Session["ScheduleId"]);
var model = GetPagedVals((page ?? 0) * pageSize, pageSize, customerId, scheduleId);
ViewBag.HasPrevious = model.HasPrevious;
ViewBag.HasMore = model.HasNext;
return View(model);
}
else
return View();
}
public MyViewModel GetPagedVals(int skip, int take, int Id, int scheduleId)
{
Session["CustomerId"] = Id;
Session["ScheduleId"] = scheduleId;
DataTable dt = JobOperation.GetJobsBySchedulerIdAndCustomerId(scheduleId, Id);
List<dynamic> dataList = new List<dynamic>();
dynamic expando = new ExpandoObject();
var p = expando as IDictionary<String, object>;
IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().Select(x => x.ColumnName);
foreach (DataRow dr in dt.Rows)
{
foreach (string columnName in columnNames)
{
p[columnName] = ConvertUtil.ToString(dr[columnName]);
}
dataList.Add(expando);
}
var result = dataList.Skip(skip).Take(take).ToList();
var model = new MyViewModel();
model.Columns = columnNames;
model.Values = result;
model.HasNext = (skip + 10 < dataList.Count);
model.HasPrevious = (skip > 0);
ViewBag.HasPrevious = model.HasPrevious;
ViewBag.HasMore = model.HasNext;
return model;
}
結果如下:
但所有行是一樣的花葯!結果必須如下: 我的SQL查詢工作良好。沒有問題的SQL。我重複的行最後一行。如何解決這個奇怪的問題。