`

Ext Form布局

 
阅读更多



现在我们要实现的效果是:
点击确定,把值传到另一页面!,如下:

原页面js代码为:
Ext.onReady( function (){
  Ext.QuickTips.init();
 
var form = new Ext.FormPanel({
    frame:
true ,
    width:
300 ,
   
// monitorValid:true,//绑定验证
    layout: " form " ,
    labelWidth:
70 ,
    title:
" 添加个人信息 " ,
    labelAlign:
" left " ,
    renderTo:Ext.getBody(),
    submit:
function (){
                   
this .getEl().dom.action =
' GetForm.aspx ' ,
                   
this .getEl().dom.method = ' POST ' ,
                   
this .getEl().dom.submit();
              },
    items:[{
              xtype:
" textfield " ,
              fieldLabel:
" 用户名 " ,
             
// id:"UserName",
              allowBlank: false ,
              blankText:
" 不能为空,请正确填写 " ,
              name:
" UserName " ,
              anchor:
" 90% "
          },{
              xtype:
" textfield " ,
              fieldLabel:
" 昵称 " ,
             
// id:"SmallName",
              name: " SmallName " ,
              anchor:
" 90% "
          },{
              xtype:
" datefield " ,
              fieldLabel:
" 注册日期 " ,
             
// id:"RegDate",
              name: " RegDate " ,
              anchor:
" 90% "
          }],
     
});
接受页面GetForm.aspx的cs代码为:
protected
void Page_Load( object sender, EventArgs e)
    {
       
string UserName = Request.Form[ " UserName " ];
       
string SmallName = Request.Form[ " SmallName " ];
       
string RegDate = Request.Form[ " RegDate " ];

        Response.Write(UserName
+
" <br/> "
+ SmallName +
" <br/> "
+ RegDate);
    }

因为很简单,我做个简要说明: // 几点说明
1 .首先定义submit参数的执行函数,即:
  submit:
function (){
                   
this .getEl().dom.action =
' GetForm.aspx ' , // 转向页面地址

this .getEl().dom.method = ' POST ' , // 方式

this .getEl().dom.submit(); // 提交!
              },
2 .为按钮添加触发相应的提交(取消)事件(这样就不是默认的ajax提交):
  buttons:[{text:
" 确定 " ,handler:login,formBind: true },{text: " 取消 " ,handler:reset}]
  });
 
function login(){
        form.form.submit();
// 提交
  }
 
function reset(){
        form.form.reset();
// 取消
  }
3 .如果你想绑定验证,在form表单添加参数monitorValid: true ,然后在按钮配置参数中添加formBind: true ,如
      buttons:[{text:
" 确定 " ,handler:login,formBind: true },{text: " 取消 " ,handler:reset}]
则只有所有的填写字段都满足条件时,
" 确定 " 方可提交!如下图,


好了,一个简单的formpanel的提交的原理弄清楚啦!
有关form提交数据的方法有多种,大家可以参考http://www.17ext.com/showtopic-55.aspx (三种ext提交数据的方式),
以后有机会我们再讨论!
下面我们来做个复杂点(只是样子)的form,示例一下(还是上面的原理)!
效果图:

传到GetForm.aspx页面后显示:

不过在传过来的页面要记得ValidateRequest="false",安全编码我就暂且不讨论了!
js代码:

Ext.onReady( function (){
  Ext.QuickTips.init();
 
var form = new Ext.FormPanel({
    frame:
true ,
    width:
500 ,
    monitorValid:
true , // 把有formBind:true的按钮和验证绑定
    layout: " form " ,
    labelWidth:
55 ,
    title:
" 添加个人信息 " ,
    labelAlign:
" right " ,
    renderTo:Ext.getBody(),
    submit:
function (){
                   
this .getEl().dom.action =
' GetForm.aspx ' ,
                   
this .getEl().dom.method = ' POST ' ,
                   
this .getEl().dom.submit();
              },
    items:[{
              xtype:
" panel " ,
              layout:
" column " ,
              fieldLabel:
" 用户名 " ,
              isFormField:
true ,
              items:[{
                        columnWidth:.
5 ,
                        xtype:
" textfield " ,
                        allowBlank:
false ,
                        blankText:
" 不能为空,请填写 " ,
                        name:
" UserName " ,
                        anchor:
" 90% "
              },{
                        columnWidth:.
20 ,
                        layout:
" form " ,
                        labelWidth:
40 ,
                        labelAlign:
" right " ,
                        items:[{
                                  xtype:
" radio " ,
                                  fieldLabel:
" 性别 " ,
                                  boxLabel:
" " ,
                                  name:
" Sex " ,
                                  checked:
true ,
                                  inputValue:
" man " , // 这里如果用value,值是on,所以用inputValue(出现这种情况的是radio,checkbox)
                                  anchor: " 95% "
                        }]
              },{
                        columnWidth:.
30 ,
                        layout:
" form " ,
                        labelWidth:
1 , // 让标签宽度为很小的值(奇怪的是为0时反而不行)
                        items:[{
                                  xtype:
" radio " ,
                                  boxLabel:
" " ,
                                  labelSeparator:
"" , // 去除分隔符“:”
                                  name: " Sex " ,
                                  inputValue:
" woman " ,
                                  anchor:
" 95% "
                        }]
              }]
    },{
// 上面是第一行
              xtype: " panel " ,
              layout:
" column " ,
              fieldLabel:
" 出生日期 " ,
              isFormField:
true ,
              items:[{
                        columnWidth:.
5 ,
                        xtype:
" datefield " ,
                        name:
" BirthDate " ,
                        anchor:
" 90% "
              },{
                        columnWidth:.
5 ,
                        layout:
" form " ,
                        labelWidth:
40 , // 注意,这个参数在这里可以调整简单fieldLabel的布局位置
                        items:[{
                                  xtype:
" combo " ,
                                  name:
" Degree " ,
                                  fieldLabel:
" 学位 " ,
                                  store:[
" 小学 " , " 初中 " , " 高中 " , " 专科 " , " 本科 " , " 硕士 " , " 博士 " ],
                                  emptyText:
" 请选择适合你的学历 " ,
                                  anchor:
" 90% "
                        }]
              }]
    },{
// 上面是第二行
              xtype: " panel " ,
              layout:
" column " ,
              isFormField:
true ,
              fieldLabel:
" 使用框架 " ,
              items:[{
                        columnWidth:.
2 ,
                        xtype:
" checkbox " ,
                        boxLabel:
" Spring.net " ,
                        name:
" SpringNet " ,
                        inputValue:
" spring " // 这里如果用value,值是on,所以用inputValue
              },{
                        columnWidth:.
2 ,
                        layout:
" form " ,
                        labelWidth:
1 ,
                        items:[{
                                  xtype:
" checkbox " ,
                                  boxLabel:
" Nhibernate " ,
                                  labelSeparator:
"" ,
                                  name:
" NHibernate " ,
                                  inputValue:
" nhibernate " ,
                                  anchor:
" 95% "
                        }]
              },{
                        columnWidth:.
6 ,
                        layout:
" form " ,
                        labelWidth:
1 ,
                        items:[{
                                  xtype:
" checkbox " ,
                                  boxLabel:
" Linq " ,
                                  labelSeparator:
"" ,
                                  name:
" Linq " ,
                                  inputValue:
" linq " ,
                                  anchor:
" 95% "
                        }]
              }]
             
    },{
// 上面是第三行
              xtype: " textfield " ,
              fieldLabel:
" Email " ,
              name:
" Email " ,
              vtype:
" email " , // email验证,如果想自定义验证的话,请参见前面的文章
              vtypeText: " email格式错误! " ,
              anchor:
" 56% " // 控制文本框的长度
             
    },{
// 上面是第四行
              xtype: " textarea " ,
              fieldLabel:
" 个性签名 " ,
              name:
" OneWord " ,
              height:
50 ,
              anchor:
" 95% "
    },{
// 上面是第五行
              xtype: " htmleditor " ,
              fieldLabel:
" 想说的话 " ,
              name:
" WantToSay " ,
              anchor:
" 95% " ,
              enableAlignments:
false , // 去除左右对齐工具栏
              enableLists: false // 去除列表工具栏
    }],
      buttons:[{text:
" 确定 " ,handler:login,formBind: true },{text: " 取消 " ,handler:reset}]
  });
 
function login(){
        form.form.submit();
  }
 
function reset(){
        form.form.reset();
  }
});

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Ext _Form布局通

    Ext_Form精典布局

    ext表格布局小例子

    extjs表格布局小例子,涉及到数据的存储,如何删除数据和添加数据

    Ext2.0 form使用实例的例程

    Ext2.0 form使用实例的例程。这个包也包含了Ext 2.0布局实例的例程。

    Ext Column+Form布局画复杂页面

    NULL 博文链接:https://wyd988928.iteye.com/blog/1166495

    学习ExtJS form布局

    一、 Form布局由类Ext.layout.FormLayout定义,名称为form,是一种专门用于管理表单中输入字段的布局,这种布局主要用于在程序中创建表单字段或表单元素等使用。 hideLabels:tru表示隐藏标签,默认为false。 ...

    Ext项目Demo集合

    Ext项目Demo集合,包括Ext的布局,Ext的form示例,Ext的文件上传功能,你值得拥有

    Ext 表单布局实例代码

    //第二句的目的就是设置控件的错误信息显示位置,主要可选的位置有: var tdate = new Ext.form.DateField({ fieldLabel: ‘日期’, emptyText: ‘请选择日期’, format: ‘Y-m-d’, disabledDays: [0, 7] });...

    十分有用有帮助的EXT学习笔记

    EXT form示例 absolut布局 card 布局 form布局 等等等等。学习EXT的好帮手

    Ext10种布局

    ExtJS2.0一共包含十种布局,常用的布局有border 、 column 、 fit 、 form 、 card 、 tabel等布局

    EXT动态新增一行

    EXT动态新增一行 用的column布局,点击一个按钮能添加一行组件,如文本框,有下拉框等。

    国内首个基于Ext开发开源企业级框架Efsform

    页面布局方式、功能强大的组件、优质的页面风格,但是如果直接使用Ext又是 较为复杂的,不仅要从头学习EXT 框架,而且Ext 是通过js 函数创建页面的, 这就不得不为每个页面都编写一个相对应初始化函数,这会使得开发...

    ExtJs中表单formPanel的横向布局

    ExtJs中表单formPanel的横向布局

    Ext 开发指南 学习资料

    4.1. 不用ext的form啊,不怕错过有趣的东西吗? 4.2. 慢慢来,先建一个form再说 4.3. 胡乱扫一下输入控件 4.4. 起点高撒,从comboBox往上蹦 4.4.1. 凭空变出个comboBox来。 4.4.2. 把select变成comboBox。 4.4.3. ...

    EXT2.0中文教程

    4.1. 不用ext的form啊,不怕错过有趣的东西吗? 4.2. 慢慢来,先建一个form再说 4.3. 胡乱扫一下输入控件 4.4. 起点高撒,从comboBox往上蹦 4.4.1. 凭空变出个comboBox来。 4.4.2. 把select变成comboBox。 4.4.3. ...

    Ext+JS高级程序设计.rar

    6.3.5 在form中使用Ext.Direct提交数据 187 6.3.6 使用polling方式进行轮询 189 6.4 本章小结 191 第7章 Store 192 7.1 Store的结构 192 7.2 Ext.data.Field 197 7.3 Ext.data.Record 198 7.4 ArrayReader、...

    关于viewport,Ext.panel和Ext.form.panel的关系

    那个深入浅出ext作者比我还懒 viewport存放Ext.panel对象,其容器中的成员可以以borderlayout方式布局

    Ext Js权威指南(.zip.001

    9.4.4 盒子布局、垂直布局与水平布局:ext.layout.container.box、ext.layout.container.vbox与ext.layout.container.hbox / 442 9.4.5 为盒子模型提供调整大小的功能:ext.resizer.splitter / 445 9.4.6 手风琴...

    ExtJSWeb应用程序开发指南(第2版)

    4.1.7 Ext.form.field.Checkbox复选框和Ext.form.field.Radio单选框 4.1.8 Ext.form.CheckboxGroup和Ext.form.RadioGroup 4.1.9 Ext.form.field.Trigger触发字段 4.1.10 Ext.form.field.Spinner微调字段 4.1.11 ...

    EXT教程EXT用大量的实例演示Ext实例

    4.1. 不用ext的form啊,不怕错过有趣的东西吗? 4.2. 慢慢来,先建一个form再说 4.3. 胡乱扫一下输入控件 4.4. 起点高撒,从comboBox往上蹦 4.4.1. 凭空变出个comboBox来。 4.4.2. 把select变成comboBox。 ...

    ext js2.0 json java web 项目例子

    一个简单的ext java web项目 有gird form tree boder布局 如果有人觉的有用,会继续完善

Global site tag (gtag.js) - Google Analytics