FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 2358|回复: 2
打印 上一主题 下一主题

获取和修改Grid表格中的编辑列单元格。

[复制链接]
跳转到指定楼层
楼主
发表于 2014-12-17 20:05:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wanghenan 于 2014-12-20 11:37 编辑

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


该表中如果手动给每个人打分,工作量比较大,所以增加了每个人设置默认,然后可以微调每个人的评分,开始认为简单,用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.         }
复制代码
就这么多了,希望能帮助到需要的人




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
板凳
 楼主| 发表于 2014-12-19 20:54:17 | 只看该作者
此帖仅作者可见
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-25 13:02 , Processed in 0.046234 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表