精华内容
下载资源
问答
  • 用来说明这个列的数据是否可编辑。特别要注意的是,jqGrid的隐藏字段就算设置了这个属性为true,一样能被编辑。在Cell Editing以及Inline Editing模式下,只能通过把这些字段设置为可见来修改。在Form Editing模式...

    editable
        可选值是true或者false,默认是false。用来说明这个列的数据是否可编辑。特别要注意的是,jqGrid的隐藏字段就算设置了这个属性为true,一样不能被编辑。在Cell Editing以及Inline Editing模式下,只能通过把这些字段设置为可见来修改。在Form Editing模式下,可以通过editoptions参数来设置是否可以修改隐藏列。
    edittype
        可选的值是'text', 'textarea', 'select', 'checkbox', 'password', 'button', 'image', 'file'以及'custom'。默认值是text。
        根据名字就可以看出来,这个属性是设置编辑框的HTML样式的。比如,设置为text值,并且可以在editoptions中设置size以及maxlength等属性。这样生成的HTML样式有点类似<input type="text" size="10" maxlength="15"/>这样。
        其中有几个要注意:
        设置checkbox的时候,需要在editoptions中指定value值,第一个值应该是checked的时候的值。比如editoptions:{value:"Yes:No"}会设定这个checkbox编辑框,选中的时候,值是Yes,没选中的时候值是No。建议最好都设定一下这个值。
        设置select的时候,editoptions中需要设定select下拉框的值。
            一种方式是用字符串设置editoptions的value属性,像这样editoption: { value: “FE:FedEx; IN:InTime; TN:TNT” },这就为下拉框设置了三个可选值。注意,冒号前面的代表的是值,冒号后面代表的是显示值。
            第二种方式是用对象来设置editoptions的value属性,这个时候,value值要用{}包括起来,像这样: editoptions:{value:{1:'One',2:'Two'}}。
            第三种方式,是为editoptions设置dataUrl参数。意思就是select的值,是通过一个URL来获取的,比如一个Ajax请求的返回值。特别需要注意的是,在这种情况下,URL的返回值必须是包括select以及option这些HTML标签的。就像这样:<select><option value="1">One</option><option value="2">Two</option></select>.这种情况下,还可以在editoptions中设置是否允许多选,size等等。
        设置image的时候,editoptions的src属性用来指定图片的地址。
        custom类型就是通过一个函数来指定需要编辑的元素,并返回需要提交的值。
            函数的定义在editoptions中说明,分别是custom_element用来指定哪一个函数用来创建编辑框,注意这里函数必须返回一个新的DOM元素,函数的参数一个是值Value,另外一个是colModel的editoptions值。
            另外一个是custom_value,这个函数用来在编辑完成之后返回本编辑框的值,这个函数的参数是元素对象。大概的调用格式如下:
            <script>
                //创建一个input输入框
                function myelem (value, options) {
                  var el = document.createElement("input");
                  el.type="text";
                  el.value = value;
                  return el;
                }
                 
                //获取值
                function myvalue(elem) {
                  return $(elem).val();
                }
                jQuery("#grid_id").jqGrid({
                ...
                   colModel: [ 
                      ... 
                      {name:'price', ..., editable:true, edittype:'custom', editoptions:{custom_element: myelem, custom_value:myvalue} },
                      ...
                   ]
                ...
                });
            </script>

    editoptions
        除了上面介绍的editoptions选项外,我们还可以设置defaultValue等等,更复杂的东西,比如dataEvents就不介绍了。
    editrules
        editrules是用来设置一些可用于可编辑列的colModel的额外属性的。大多数的时候是用来在提交到服务器之前验证用户的输入合法性的。比如editrules:{edithidden:true, required:true....}。
        可选的属性包括:
        edithidden:只在Form Editing模式下有效,设置为true,就可以让隐藏字段也可以修改。
        required:设置编辑的时候是否可以为空(是否是必须的)。
        number:设置为true,如果输入值不是数字或者为空,则会报错。
        integer:
        minValue:
        maxValue:
        email:
        url:检查是不是合法的URL地址。
        date:
        time:
        custom:设置为true,则会通过一个自定义的js函数来验证。函数定义在custom_func中。
        custom_func:传递给函数的值一个是需要验证value,另一个是定义在colModel中的name属性值。函数必须返回一个数组,一个是验证的结果,true或者false,另外一个是验证错误时候的提示字符串。形如[false,”Please enter valid value”]这样。
        自定义验证的例子:
        <script>
            function mypricecheck(value, colname) {
            if (value < 0 && value >20) 
               return [false,"Please enter value between 0 and 20"];
            else 
               return [true,""];
            }

            jQuery("#grid_id").jqGrid({
            ...
               colModel: [ 
                  ... 
                  {name:'price', ..., editrules:{custom:true, custom_func:mypricecheck....}, editable:true },
                  ...
               ]
            ...
            });
        </script>    < function mypricecheck(value, colname) { if (value < 0 && value >20) return [false,"Please enter value between 0 and 20"]; else return [true,""]; } jQuery("#grid_id").jqGrid({ ... colModel: [ ... {name:'price', ..., editrules:{custom:true, custom_func:mypricecheck....}, editable:true }, ... ] ... }); // >

    formoptions(只在Form Editing方式下有效),他的主要作用是用来重新排序Form中的编辑元素,同时可以在编辑元素前或者编辑元素后增加一些信息(比如,一些提示信息,或者一个红色的*表示必须要填写等等)。
        可选的属性如下:
        elmprefix:字符串值,如果设置了,则会在编辑框之后出现一些内容(可能是HTML的内容)
        elmsuffix:字符串值,如果设置了,则会在编辑框之前出现一些内容(可能是HTML的内容)
        label:字符串值,如果设置了,则这个值会替换掉colNames中的值出现作为该编辑框的标签显示
        rowpos:数字值,决定元素行在Form中的位置(相对于文本标签again with the text-label)
        colpos:数字值,决定元素列在Form中的位置(相对于标签again with the label)
        两个编辑框可以有相同的rowpos值,但是colpos值不同,这会把这两个编辑框放到Form的同一行中。
        特别注意:如果设置了rowpos以及colpos的值,强烈推荐为所有的其他编辑元素都设置这些值。

    展开全文
  • 在项目过程中,常常会遇到ctable点击保存的时候,点击保存前的最后一个编辑格子的内容为空...如何让jtable停止编辑状态,并且能让当前值存在。(html中get就可以直接拿到,java不行) boolean flag=false; if(...

    在项目过程中,常常会遇到ctable点击保存的时候,点击保存前的最后一个编辑格子的内容为空。

    如何使表格的编辑状态取消,达到失焦的效果?

    如图:

    要求前三个字段不能为空,最后一个字段允许为空。

    如何让jtable停止编辑状态,并且能让当前值存在。(html中get就可以直接拿到,java不行)

     

            boolean flag=false;
            if(cTable1.getCellEditor()!=null){
                flag=cTable1.getCellEditor().stopCellEditing();
            }else{
                flag=true;
            }
            if(!flag){
                return;
            }
            int tableColNum = cTable1.getRowCount();
            for (int i = 0; i < tableColNum; i++) {
                String descript = cTable1.getValueAt(i, 1).toString();
                String startday = cTable1.getValueAt(i, 2).toString();
                String endday = cTable1.getValueAt(i, 3).toString();
                for (int j = i + 1; j < tableColNum; j++) {
                    String ss_descript = cTable1.getValueAt(j, 1).toString();
                    String ss_startday = cTable1.getValueAt(j, 2).toString();
                    if (descript.equals(ss_descript)) {
                        Msg(descript + "有重复的描述,请检查!");
                        return;
                    }
                    if (startday.equals(ss_startday)) {
                        Msg(startday + "有重复的起始时间,请检查!");
                        return;
                    }
                }
                if(StringUtils.isBlank(descript)){
                        Msg("描述不能为空,请检查!");
                        return;
                }
                if(StringUtils.isBlank(startday)){
                        Msg("开始时间不能为空,请检查!");
                        return;
                }
                if(StringUtils.isBlank(endday)){
                        Msg("结束时间不能为空,请检查!");
                        return;
                }
            }


    这里使用的stringUtils的isBlank方法很好用。

     

     

    展开全文
  •  如何在DBGrid中选中行,而又它可以进入编辑状态?  也许你会问我这有什么用?呵呵,做数据库应用的兄弟们会深有感触,当用DBGrid显示的字段过多时,用户不得拉动最下面的滚动条,去看最右边的东西,

    在DBGrid中可选中行而又可进入编辑状态

    关键字:DBGrid,选中行,编辑状态,dgRowSelect

    作者:yifei(逸飞) 更新:2005-10-19浏览:11406

      如何在DBGrid中选中行,而又让它可以进入编辑状态?
      也许你会问我这有什么用?呵呵,做数据库应用的兄弟们会深有感触,当用DBGrid显示的字段过多时,用户不得不拉动最下面的滚动条,去看最右边的东西,如果没有设置DBGrid->Options[dgRowSelect],那么,拉到最右边之后,很有可能看串行的;如果设置了DBGrid->Options[dgRowSelect],则在拉到最右边之后,不会看串行,但是鼠标点击其它行(不是当前选中行)时,DBGrid的视图一下子就会回到显示最左边的那一列,确实很麻烦,用户不得不一次又一次的拖运下面的滚动条。
      一同事因这个问题而苦恼,而我又在CSDN的文档库中看到了这篇文章:
      《DBGrid使用全书(五)》,链接:http://dev.csdn.net/article/51/51845.shtm,是Delphi版本的,核心代码如下:
      type
      TMyDBGrid=class(TDBGrid);
      //
      //DBGrid1.Options->dgEditing=True
      //DBGrid1.Options->dgRowSelect=False
      procedureTForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
      begin
       withTMyDBGrid(Sender) do
       begin
       ifDataLink.ActiveRecord=Row-1 then
       begin
      Canvas.Font.Color:=clWhite;
      Canvas.Brush.Color:=$00800040;
       end
       else
       begin
      Canvas.Brush.Color:=Color;
      Canvas.Font.Color:=Font.Color;
       end;
      DefaultDrawColumnCell(Rect,DataCol,Column,State);
       end;
      end;
      他的解决办法是:曲线救国,取消DBGrid->Options[dgRowSelect],把当前选中行的背景绘制成蓝色,就象是被选中一样,想法确实很妙。我们公司使用C++Builder,我只好把这段代码改为C++Builder版本的,这时,我才发现这段代码的精妙之处。
      我发现DataLink属性是TCustomDBGrid中声明为protected的,而在DBGrid中并未声明它的可见性,因此,不能直接使用它;而Row属性则是在TCustomGrid中声明为protected的,在TCustomGrid的子类中也未声明它的可见性,那么,这段代码为何在Delphi中运行的很好?
      原因就在于:ObjectPascal的单元封装,在同一个单元中定义的类,互相之间是友员的关系,我们再来看这段代码的开头:
      type
      TMyDBGrid = class(TDBGrid);
      声明了一个TMyDBGrid类,那么,当前这个窗体类就和TMyDBGird类互为友元了,那么当然当前窗体类可以直接访问TMyDBGrid的私有属性Row和DataLink了,一切都明了了,那么用C++就好实现了,核心代码如下:
      void__fastcall TMainForm::LineSelEdit(TObject *Sender,const TRect &Rect, intDataCol, TColumn *Column,TGridDrawState State)
    // 本文转自 C++Builder研究 - http://www.ccrun.com/article.asp?i=637&d=2724wn
      {
       classTMyGridBase : public TCustomGrid
       {
       public:
      __property Row;
       };
       classTMyGrid : public TCustomDBGrid
       {
       public:
      __property DataLink;
       };
       TMyGrid*MyGrid = (TMyGrid*)Sender;
      TMyGridBase *MyGridBase = (TMyGridBase*)Sender;
       TDBGrid*Grid = (TDBGrid*)Sender;
      
      if(MyGrid->DataLink->ActiveRecord == MyGridBase->Row-1) {
      Grid->Canvas->Font->Color = clWhite;
      Grid->Canvas->Brush->Color = TColor(0x00800040);
       } else{
      Grid->Canvas->Brush->Color = Grid->Color;
      Grid->Canvas->Font->Color = Grid->Font->Color;
       }
      
      Grid->DefaultDrawColumnCell(Rect,DataCol,Column,State);
      }
      我把它封装成一个函数,函数的参数与DBGrid的OnDrawDataCell的参数一样,使用它的方法就是取消设置DBGrid->Options[dgRowSelect],然后设置DBGrid->DefaultDrawing= false,然后在这个DBGrid的OnDrawDataCell事件中调用这个函数,如下:
      void__fastcall TMainForm::DBGridDrawColumnCell(TObject *Sender,
       constTRect &Rect, int DataCol, TColumn *Column,
      TGridDrawState State)
      {
      this->LineSelEdit(Sender,Rect,DataCol,Column,State);
      }

    示例代码下载:http://www.ccrun.com/_down/src/DBGridSelLine.rar


    展开全文
  • 可以动态添加一行数据,但是我对这一行数据的输入要有控制,比如前面的单元格有个combobox,根据选择的值来决定后面面的单元格是否可编辑(就是是否禁止用户输入数据),我尝试过对columnModel的字段编辑器设置...
  • 序号是Excel表格制作中不可缺少的一个元素,也是Excel中应用最多的一个字段。有的人会说,序号有什么可以解说的。当日常使用Excel编辑表格时,会需要给表格添加序号,若要添加的序号较多,一个一个的手动输入序号会...

    7671c3754625c19771bc53099bc65abb.png

    序号是Excel表格制作中不可缺少的一个元素,也是Excel中应用最多的一个字段。有的人会说,序号有什么可以解说的。当日常使用Excel编辑表格时,会需要给表格添加序号,若要添加的序号较多,一个一个的手动输入序号会浪费一定的时间。我们可以利用Excel中的一些功能,让Excel自动给表格添加序号。下面以Excel2016为例的方法步骤,仅供参考。

    方法一:拖动法

    1.在需要输入序号的单元格中分别输入 “1”和“2” 前两个序号,选中这两个单元格,将光标移至该单元格区域的右下角,至光标变成十字形状。

    a7e060f1803be27459594a2b5e696ab5.png

    2.然后向下拖动到填充需要的位置,松开鼠标左键,即可快速填充序号。

    64614b781e99ea8715ab6afb74e28c0d.png

    方法二:选项卡填充

    1.在单元格中输入起始数字“1”,将光标移至该单元格区域的右下角,至光标变成十字形状。

    f438cbbbecf4a03fe3f2959e8fdb11a3.png

    2.然后向下拖动到填充需要的位置,松开鼠标左键,单击展开右下角的【自动填充选项】菜单,选择【填充序列】即可生成这个序列号。

    f0d1fab690d885a5ca743d19c255ba93.png

    方法三:填充菜单

    1.在单元格中输入起始数字“1”,选择【开始】中的【编辑】组中的【填充】选项,单击展开【填充】的菜单,找到其中的【序列】。

    d4fd1b31d634b78b7535c2d56878ae81.png

    2.【序列产生在】选择【列】→【类型】选择【等差序列】→选择【起步值】和【终止值】→最后点击【确定】即可生成。

    f378493a254e1169a405dfa098192a79.png

    今天的分享就到这里啦,如果对你有帮助,可以分享给身边的人哦~想要了解更多办公软件的相关知识的话,可以留言告诉小编,或许下一篇就是你的专属解答篇。

    展开全文
  • 序号是Excel表格制作中不可缺少的一个元素,也是Excel中应用最多的一个字段。有的人会说,序号有什么可以解说的。当日常使用Excel编辑表格时,会需要给表格添加序号,若要添加的序号较多,一个一个的手动输入序号会...
  • SQL Server 2008实战(SQL Server程序员和DBA不可或缺的权威参考手册) 基本信息 原书名: SQL Server 2008 Transact-SQL Recipes: A Problem-Solution Approach 原出版社: Apress 作者: (美)Joseph Sack 译者: 金...
  • 为什么做一个东西可以视图和状态进行绑定,状态变更了视图自动变更,就不用手动更新页面了。这就是后来人们想出了 MVVM 模式,只要在模版中声明视图组件是和什么状态进行绑定的,双向...
  • eas供应链dep案例集

    2017-11-18 22:32:39
    单据操作控制修改 EASSCMA1P0075 采购合同&订单上的交货日期不可编辑 单据转换,采购比价单到采购合同,采购合同到采购订单,客户希望采购合同和采购订单上面的交货日期是单据带过来的,不希望能修改。 "1、 在采购...
  • ABAP中文幫助文檔

    2018-10-27 19:07:09
     大写/小写:显示和存储时,如果要ABAP/4编辑器将程序代码与输入时保持相同,则请将该字段置空。如果选择该字段,则所有的程序代码(除了引号中的文本及注释外)都转换成大写字母。屏幕显示依赖于所使用的编辑器...
  • 6.3.2 数据透视表中数据字段的放置可能一定最适合数据透视图 133 6.3.3 Excel 2007中仍然存在的少量格式限制 135 6.4 案例学习:创建显示产品发货频率和收入分布情况的报表 136 6.5 能够替代使用数据透视图...
  • 6.3.2 数据透视表中数据字段的放置可能一定最适合数据透视图 133 6.3.3 Excel 2007中仍然存在的少量格式限制 135 6.4 案例学习:创建显示产品发货频率和收入分布情况的报表 136 6.5 能够替代使用数据透视图...
  • 6.3.2 数据透视表中数据字段的放置可能一定最适合数据透视图 133 6.3.3 Excel 2007中仍然存在的少量格式限制 135 6.4 案例学习:创建显示产品发货频率和收入分布情况的报表 136 6.5 能够替代使用数据透视图...
  • 6.3.2 数据透视表中数据字段的放置可能一定最适合数据透视图 133 6.3.3 Excel 2007中仍然存在的少量格式限制 135 6.4 案例学习:创建显示产品发货频率和收入分布情况的报表 136 6.5 能够替代使用数据透视图...
  • 1. 如何使指定的单元格不可编辑? 75 2. 如何让一个单元格不可用(disable)? 75 3. 如何避免用户将焦点设置到指定的单元格? 77 4. 如何使所有单元格总是显示控件(不论它是否处于编辑状态)? 77 5. Why does the cell ...
  • 使用内建的字段编辑器,自订字段属性以及外观。 自动化 透过Sawmill排程功能,可以安排每日自动更新数据库、移除过期数据、产生报表、以邮件寄出报表等动作。 单一排程时间安排多项作业,批次执行,毋需考虑...
  • ·优化数据库中一些规范字段 ·增加前台标签库TagLibHome,统一include标签为tc_include ·url美化 ·特殊用户名过滤 ·增加推荐,置顶功能 ·幻灯片隐藏显示功能 ·广告隐藏显示功能 ·友情链接隐藏显示...
  • MAPGIS地质制图工具

    2013-05-06 16:15:30
    本功能不可跨文件使用,只对当前编辑状态(或单文件打开)的文件有效。 1、 如果需要多次筛选,可以勾选“是否从选择集中筛选”。 操作步骤: 执行菜单“1辅助工具\参数(属性)筛选”,弹出筛选图元对话框: A、...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0252 如何实现不可移动的窗体 170 0253 如何在不使用标题栏的情况下移动窗体 170 0254 使窗体标题栏文字右对齐 170 0255 在窗体标题栏上添加按钮 171 0256 取消窗体标题栏的关闭按钮 172 0257 如何实现...
  • 0252 如何实现不可移动的窗体 170 0253 如何在不使用标题栏的情况下移动窗体 170 0254 使窗体标题栏文字右对齐 170 0255 在窗体标题栏上添加按钮 171 0256 取消窗体标题栏的关闭按钮 172 0257 如何实现...
  • 0252 如何实现不可移动的窗体 170 0253 如何在不使用标题栏的情况下移动窗体 170 0254 使窗体标题栏文字右对齐 170 0255 在窗体标题栏上添加按钮 171 0256 取消窗体标题栏的关闭按钮 172 0257 如何实现...
  • 0252 如何实现不可移动的窗体 170 0253 如何在不使用标题栏的情况下移动窗体 170 0254 使窗体标题栏文字右对齐 170 0255 在窗体标题栏上添加按钮 171 0256 取消窗体标题栏的关闭按钮 172 0257 如何实现...
  • 0252 如何实现不可移动的窗体 170 0253 如何在不使用标题栏的情况下移动窗体 170 0254 使窗体标题栏文字右对齐 170 0255 在窗体标题栏上添加按钮 171 0256 取消窗体标题栏的关闭按钮 172 0257 如何实现...
  • 0252 如何实现不可移动的窗体 170 0253 如何在不使用标题栏的情况下移动窗体 170 0254 使窗体标题栏文字右对齐 170 0255 在窗体标题栏上添加按钮 171 0256 取消窗体标题栏的关闭按钮 172 0257 如何实现...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 125
精华内容 50
关键字:

如何让字段不可编辑