FineUI 官方论坛

标题: 获取和修改Grid表格中的编辑列单元格。 [打印本页]

作者: wanghenan    时间: 2014-12-17 20:05
标题: 获取和修改Grid表格中的编辑列单元格。
本帖最后由 wanghenan 于 2014-12-20 11:37 编辑

发表帖子2天多了,没人回复,经过自己查询还是解决了。由于项目中需要需要在前台页面设置默认值功能,刚开始没有研究ExtJS的api,一开始一头雾水,没办法,从api学些,功能截图如下:

[attach]7017[/attach]
该表中如果手动给每个人打分,工作量比较大,所以增加了每个人设置默认,然后可以微调每个人的评分,开始认为简单,用html操作了,代码如下:

  1. function ModifyData(colIndex,value)
  2.         {
  3.             var grid = F('<% =Grid1.ClientID%>');
  4.             var arrayTr = document.getElementById(grid.getId() + "-normal-body").firstChild.firstChild.lastChild.getElementsByTagName('tr');//5
  5.             var trCount = arrayTr.length;
  6.             var arrayTd;
  7.             var td;
  8.             for (var i = 0; i < trCount; i++) {  //i=0表示表头等没用的行  
  9.                 arrayTd = arrayTr[i].getElementsByTagName("td");
  10.                 arrayTd[colIndex].firstChild.innerHTML = value;
  11.             }
  12.         }
复制代码



后来发现表格上面是修改了,但是在后台发现还是获取不到数据,该方法最后放弃。
最后还是从ExtJS的api开始学起,最后的解决代码如下:
  1. <td style="text-align:center;height:30px;font-size:14px;width:33%;"><f:Label ID="tName" runat="server" Text="设置打分默认值:"></f:Label><f:DropDownList ID="SelectUser" runat="server" Width="90px"></f:DropDownList>
  2.                                         <f:DropDownList ID="SelectLevel" runat="server" Width="65px" AutoPostBack="true"><Listeners><f:Listener Event="change" Handler="onchange" /></Listeners></f:DropDownList></td>
复制代码
  1. function onchange(combox) {  //绑定事件,这个没什么好说的
  2.             var user = F('<% =SelectUser.ClientID%>');
  3.             GetColIndex(user.getValue(),combox.getValue());
  4.         };
复制代码
  1. function GetColIndex(Name, value)
  2.         {
  3.            var grid = F('<% =Grid1.ClientID%>');
  4.            var columns = grid.columns;   //获取表格列数组
  5.            Ext.Array.each(columns, function (column, index) { //遍历列数组
  6.                if (column.text == Name)  判断列名是否是符合条件,这里可以获取列的很多信息,自己可以通过浏览器的js调试查看下,
  7.                {
  8.                    ChangeRowData(column.dataIndex,value);  //dataIndex的值一般是这样的 Panel1_Grid1_ctl04
  9.                }
  10.            });
  11.         }
复制代码
  1. function ChangeRowData(ColName, value)
  2.         {
  3.             var grid = F('<% =Grid1.ClientID%>');
  4.             grid.getStore().each(function (record) {  //这里是关键部分,数据都在record中,
  5.                 record.set(ColName, value);  //循环设置该列的值, var value = record.get(ColName); 获取值,这可以实现很多功能,比如根据值修改单元格颜色等;
  6.             });
  7.         }
复制代码
就这么多了,希望能帮助到需要的人









欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4