EXT GRID 问题 求 过路大神指教 此问题已 为难小弟良久

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXT GRID 问题 求 过路大神指教 此问题已 为难小弟良久相关的知识,希望对你有一定的参考价值。

extjs service 中在数据库查处LIST 用json 向JS中 的grid 传递问题
代码如下
service 方法
//根据ID查询 费用表
public static String getaddfeeList(HttpServletRequest request,HttpServletResponse response)

String feeIdStr= request.getParameter("feeIdStr");
String[] feeIdArray = feeIdStr.split(",");

GenericDelegator delegator = (GenericDelegator)request.getAttribute("delegator");
PaginationUtil pagination = new PaginationUtil(delegator);
pagination.setEntityName("MartFee");
pagination.setLimit(Integer.parseInt(ParamUtils.getParameter List<EntityCondition> andExprs = FastList.newInstance();
andExprs.add(EntityCondition.makeCondition("feeStatus", EntityOperator.EQUALS,ConfigFileUtil.getCommonProp("startStatus")));
//查询条件设置
for(int i=0;i<feeIdArray.length;i++)
if(UtilValidate.isNotEmpty(feeIdArray[i]))
andExprs.add(EntityCondition.makeCondition("feeId", EntityOperator.EQUALS,feeIdArray[i]));


EntityCondition condition = EntityCondition.makeCondition(andExprs, EntityOperator.OR);
List<String> orderBy = FastList.newInstance();
orderBy.add("createdStamp");
pagination.setOrderBy(orderBy);
pagination.setCondition(condition);
pagination.doQuery();

// 利用JSONObject工具类生成json数据
JSONObject jsonO = new JSONObject();
JSONArray jsonA = JSONArray.fromObject(pagination.getResultList());
jsonO.element("totalCount", pagination.getTotalRecord());
jsonO.element("contractList", jsonA);
//响应客户端 //可以打印出来
System.out.println("-------------"+jsonO.toString());
UtilJson.print(response, jsonO.toString());

EXT JS 中

var myAddGrid = new Ext.grid.GridPanel(
title : '',
cm : cm,
store : Feestore,
frame : true,
width : 600,
height : 300,
loadMask:true,
viewConfig :
forceFit : true

);
var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer,
由于字数限制 缩写 若干

,
header : '往来单位',
dataIndex : 'AddfeeUnit',
align : 'center',
sortable : true
,
header : '数量',
dataIndex : 'AddfeeNumber',
align : 'center',
sortable : true
,
header : '单价',
dataIndex : 'AddFeeprice',
align : 'center',
sortable : true
,
header : '总金额',
dataIndex : 'AddFeesumtotal',
align : 'center',
sortable : true
,
header : '状态',
dataIndex : 'AddFeeStatus',
align : 'center',
sortable : true
,
header : '备注',
dataIndex : 'AddFeememo',
align : 'center',
sortable : true
]);
var Feestore = new Ext.data.Store(
url : 'getaddfeeList',
reader : new Ext.data.JsonReader(
totalProperty : 'totalCount',
root : 'contractList'
, testRecord),

remoteSort : false
);
在service 中可以 打印出 JSON中的 数据 但是在页面 alert(Feestore.getTotalCount()); 确实0

  首先给楼主看下我的Action返回的json数据格式:
  "limit":15,"result":["budget":0,"remark":"","documentNum":"","presidentName":"段鑫.湖南分公司.娄底中心支公司.冷水江支公司","structureName":"代理人资格考试培训","oaUserId":"","finishedCount":0,"depId":"HA0","orgId":3212,"id":145407,"sapNum":"","planType":"1","principalId":"H22100723","sapType":"","userId":"","factStartdate":null,"userName":"","presidentId":"duanxin","className":"湖南分公司娄底中心支公司代理人资格考试培训2011年第8期","presidentPeriod":0,"factStuCount":"","stuCount":"5","structureType":"","factEnddate":null,"post":0,"principalName":"李长清","check":0,"status":"0","planId":147165,"workNum":"","period":"201106","orgName":"娄底中心支公司","cost":0,"classNum":"HA0045342","content":"","sap":"","startdate":"2011-06-04 00:00:00","trainCenter":"","periodType":0,"cash":0,"target":"","comId":"H","trainAddress":"","structureId":106,"enddate":"2011-06-05 00:00:00","brief":"","certificateFlag":""],"totalCount":44548,"start":0,"totalPages":2970

  前台的store:
  var classStore = new Ext.data.JsonStore(
  root :'result',
  totalProperty :'totalCount',
  idProperty :'id',
  remoteSort :false,
  fields : [ 'id', 'classNum', 'className', 'budget', 'stuCount', 'sap',
  'orgName','status','startdate','enddate','orgId','planId',
  'structureId','content','cost','remark','target','presidentId',
  'presidentName','principalId','principalName','factStartdate',
  'factEnddate','factStuCount','structureName','comId','depId','sapNum',
  'presidentPeriod','periodType'],
  proxy :new Ext.data.HttpProxy(
  url :'classinfo!listByCompanyLevel.action'
  )
  );

  首先说下我的是毫无问题的。
  不清楚楼主的json转换工具是否有问题,建议楼主check一下,看看print出来的格式是否没问题。
  主要是totalCount参数与contractList的级别是否在json中是同级,有问题可以再追问追问

idProperty :'id' 是什么属性?作用是什么?

追答

这属性是指数据的id列可指定为我数据库中的id列,不指定的话ext会自动为数据加上一列id
和你不显示数据关系不大

追问

上一个问题的答案找到了。 因为我后台用的是ofbiz 在这就不解释了。

您可以给提供一个 grid 多选 提交 被选中行的数据 例子么?

追答

首先不知道你用的ext是什么版本的
3以前的例子如下
var postSM = new Ext.grid.CheckboxSelectionModel(
listeners :
。。。

);
var postGridPagingBar = new Ext.PagingToolbar(
displayInfo :true,
displayMsg :'共2条,当前0 - 1条',
emptyMsg :"无分页信息",
pageSize : 15,
store : postStore,
displayInfo :true,
items : [
text :'删除',
id :'btn-delete-post',
disabled:true,
tooltip :'删除',
handler : function()
var sel = postSM.getSelections();/ / !!!此处重点!!!!
Ext.MessageBox.confirm("确认:","是否要删除已选的"+sel.length+"条记录?", function(btn)
if(btn == 'yes')

var ids = '';
/// 在此处获取所选记录id,拼接
for(var i=0; i<sel.length; i++)
ids+=(ids=='')?sel[i].data.id:","+sel[i].data.id;

Ext.Ajax.request(
url: 'postInfo!delete.action',
success: function()
postStore.reload();
Ext.getCmp('btn-delete-post').setDisabled(true);
Ext.MessageBox.alert('成功','删除成功!');
,
failure: function()Ext.MessageBox.alert('错误','删除失败!');,
params: ids: ids ////此处传参
);
else
return;

);

]
);

var postGrid = new Ext.grid.GridPanel(
title :'课程资料列表',
store : postStore,
region :'center',
sm : postSM,
border :false,
columns : [new Ext.grid.CheckboxSelectionModel(),
id :'id',
header :"ID",
width :50,
dataIndex :'id'

,
header :"岗位名称",
width :250,
dataIndex :'postName'

,
header :"岗位限制人数",
width :100,
dataIndex :'staffCount'

,
header :"说明",
width :250,
dataIndex :'remark'
],
bbar :postGridPagingBar
);

追问

我用的是 3.0的 我想要 在grid 中 通过多选框 勾选的方式 把选中的行 里面的一整行数据 传到后台去,NO 是删除。 删除只传一个ID 我要 传 整行

追答

那不是一样么。。。
for(var i=0; i<sel.length; i++)
ids+=(ids=='')?sel[i].data.id:","+sel[i].data.id;

这个是拼id 你使用el[i].data.XXXX不就是拼别的了么。。
反正格式由你自己定,传到后台去自己想怎么解析都是可以的,
还有不太明白你用多选还传整行数据是想要干什么?
如果是编辑的话那必须单选啊。不能同时编辑好几行数据吧。同时编辑好几行的话就要用EditorGridPanel了。
如果是仅仅想将这几行数据插入另一张表的话,还不如只传id后台做数据交互

回楼下:
不太清楚你grid的数据时从哪来的。
一般无非是通过action或者service从后台取的,也就是说,你的数据本身数据库中应该就存在。
那么你根本没必要将所有数据取出来放在前台,然后又从前台传回后台。
你说要存入数据库,那我能理解的可能情况就是从数据库的一张表插入另一张表
那真正效率的方式必然是:
只将前表的id传入后台,根据id查得list,插入后表。
或者:直接使用id在数据库中用sql直接操作。

参考技术A 我想把在 grid 中 选中的 整行数据 储存到数据库中
我的grid中有很多 列名 如果全拼在一起 最后搞成一坨 传到后台 在后台 取到、拆开 存入数据库是不是会 很不效率呢。

java spring MVC 用poi做Excel导入碰到一个问题,求大神指教,有关下拉框的问题

本地有个Excel文件,上传到服务器上对文件进行操作,上传是用的spring带的上传功能

现在有这样一个问题,文件里有列是下拉选择框,如果保存前点击了这列,上传到后台的时候读取就获取不到工作薄了,如下图

如果保存前鼠标点击别的列就能正常读取文件,
后台采用的是2003 的读取方式..

public static void main(String[] args) throws IOException 

File file = new File("d:/test.xls");

InputStream is = new FileInputStream(file);

Workbook wb = new HSSFWorkbook(is);


System.out.println("读取成功");
return;

刚才写了个测试程序试了一下,也是2003格式的,里边只有一个下拉框


测试结果:无论点不点或者修改下拉框值,一切正常,workbook对象都能创建成功。


你看看是不是你导入的excel里存在 宏之类的 东西。

参考技术A 在你的excel中写宏,,,Workbook_BeforeSave事件(EXCEL关闭前操作),选择某单元格,比如A1,这样保证不会选择的是F3
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
[A1].SELECT
End Sub

以上是关于EXT GRID 问题 求 过路大神指教 此问题已 为难小弟良久的主要内容,如果未能解决你的问题,请参考以下文章

我用JQuery miniui 做了一个表格,求大神指教一个下拉框问题

求 Oracle 大神指教,更具时间自动更新状态

maven下载的时候出现的问题,求大神指教

使用vs2005cimage类显示图片出现问题。求大神指教

wpf求大神指教DataGrid!!!

EXT grid 怎样在JS里面动态设置为只读.不可编辑?