easyui datagrid .netmvc 页面只有一个datagrid时,出现有时可以调用controller有时不可以

vovo09 2016-09-13 12:03:04
如题,当页面只有一个datagrid时,datagrid指定的url有时可以调用,有时不可以,整个页面显示空白
调试过,有时候不可以进apicontroller,页面显示空白;刷新几次,又可以进入apicontroller,正常显示。
请大神们指教~
html代码如下:

@{
ViewBag.Title = "SFM";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section scripts{
<script src="~/Areas/SFM/ViewModels/FlowStart.js" type="text/javascript"></script>
<script type="text/javascript">
var data = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model));
ko.bindingViewModel(new com.viewModel.searchEdit(data));

</script>
}
<table data-bind="datagrid:grid" style="display: none;">
<thead>
<tr>
<th field="FlowObjectID" sortable="true" align="left" width="20" editor="text"

hidden="true">
流程审批对象ID
</th>
<th field="FlowObjectName" sortable="true" align="left" width="200" editor="text">
流程审批对象名称
</th>
<th field="TableName" sortable="true" align="left" width="250" editor="text">
对应表名
</th>
<th field="Memos" sortable="true" align="left" width="500" editor="text">
备注
</th>
</tr>
</thead>
</table>

JS代码如下:

/**
* 模块名:com viewModel
* 程序名: FlowStart.js
* Copyright(c) 2013-2015 [ ]
**/
var com = com || {};
com.viewModel = com.viewModel || {};

com.viewModel.searchEdit = function (data) {
var self = this;
this.urls = data.urls;
this.getSize = function () {
var size = { w: 4, h: 40 }, ret = {};
if (size && size.w) ret.width = $(window).width() - size.w;
if (size && size.h) ret.height = $(window).height() - size.h;
return ret;
};

this.grid = {
width: self.getSize().width,
height: self.getSize().height,
url: self.urls.query,
queryParams: ko.observable(ko.toJS(this.form)),
async: false,
nowrap: false, //允许折行
remoteSort: true, //后台排序
pagination: true, //翻页
pageList: [5, 10, 20, 30, 40, 50],
pageSize: 20,
fitColumns: false,
onLoadSuccess: function () {
$(".combo > .combo-text").attr('readonly', 'readonly');
}
};


};

controller代码如下

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using System.Web.Http;
using System.Web.Mvc;
using Sundy.U4.Core;
using Sundy.U4.Models;
using Sundy.U4.SFM.Web.Areas.SFM.Common;

namespace Sundy.U4.Areas.SFM.Controllers
{
public class FlowStartController : Controller
{
public ActionResult Index()
{
var model = new
{
urls = new
{
query = "/api/SFM/FlowStart",
}
};

return View(model);
}
}

public class FlowStartApiController : ApiController
{
/// <summary>
/// 获取流程审批对象信息
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public dynamic Get(RequestWrapper query)
{
query.LoadSettingXmlString(@"
<settings defaultOrderBy='FlowObjectID'>
<select>*</select>
<from>T_SFM_FlowObject</from>
<where defaultForAll='true' defaultCp='equal' defaultIgnoreEmpty='true' >
</where>
</settings>");
var service = new T_SFM_FlowObjectService();
var pQuery = query.ToParamQuery();
var result = service.GetDynamicListWithPaging(pQuery);
return result;
}
}
}



第一次加载,页面显示空白

刷新几次,页面显示有数据
...全文
264 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vovo09 2016-09-19
  • 打赏
  • 举报
回复
直接在加载的方法里放断点,有时可以进,有时不可以进。 如果是在js里放断点,一步步走完,就可以进入后台的断点,加载正常;如果js没设断点,那就有时可以有时不可以。 谢谢回复
  • 打赏
  • 举报
回复
如果你调试结果发现实际上每一次加载页面其实是读取了后台数据,问题出在前端,那么可能就是绑定 datagrid 的方法是有问题的了。异步加载,那么 this.grid
引用 1 楼 vovo09 的回复:
试过了如果加上下面代码就可以了

<div style="display: none">
    <input type="text" data-bind="datasource:dataSource.Supplier ,comboboxValue:form.MineNo"
        class="z-txt  easyui-combobox" data-options="showblank:true" /></div>
感觉后台要有其他的数据绑定,才会触发到datagrid的绑定。有什么其他的解决办法吗?
不知道你的 this.form 是什么?! 你可以先把 queryParams: {.....} 这里用一个傻瓜化的对象来代替,试一试脱离 form 之后的结果。 js 是很不靠谱的,不管是语法还是运行时,都难于预先查找代码设计错误。
  • 打赏
  • 举报
回复
1. 你可以在 this.grid = {.....} 那里设置断点,用 vs 调试脚本,查看变量。 2. 也可以使用 console.log(....) 方式将有关 urls.query 等等变量打印出来,然后进入浏览器的(注意不是 vs 的)控制台窗口去查看日志。 3. 同时使用一个 http 调试器记录每一次刷新时到底有没有实际发出查询。 贴调试结果、截屏。不要只贴源代码。
nitaiyoucala 2016-09-14
  • 打赏
  • 举报
回复
高大上的编码风格
vovo09 2016-09-13
  • 打赏
  • 举报
回复
试过了如果加上下面代码就可以了

<div style="display: none">
    <input type="text" data-bind="datasource:dataSource.Supplier ,comboboxValue:form.MineNo"
        class="z-txt  easyui-combobox" data-options="showblank:true" /></div>
感觉后台要有其他的数据绑定,才会触发到datagrid的绑定。有什么其他的解决办法吗?
该课程是胡延亮老师在完成《ASP.Net开发课程  MVC5入门篇》和《ASP.Net开发课程  MVC5提升篇》基础课程后的,第一门关于MVC5+EasyUI实战基础的课程,主要内容包含:环境搭建,系统登录,用户管理等基础功能。    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。    easyui是一种基于jQuery、Angular.、Vue和React的用户界面插件集合。    easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能。    使用easyui你不需要写很多代码,你只需要通过编写一些简单HTML标记,就可以定义用户界面。    easyui是个完美支持HTML5网页的完整框架。    easyui节省您网页开发的间和规模。    easyui很简单但功能强大的。主讲内容:创建数据库环境搭建创建登录页面创建登录控制器实现登录功能创建管理主页面创建用户管理页面用户列表显示用户增加用户删除用户查询用户删除等功能。

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧