DevExpress看明白代码--FormLayout.DataBinding完整案例解读

//view----------DataBindingPartial

@model EditableEmployee   //使用强类型模型

@Html.DevExpress().FormLayout(settings => {
    settings.Name = "formLayout";
    settings.UseDefaultPaddings = false;
    settings.AlignItemCaptionsInAllGroups = true;

    settings.SettingsAdaptivity.AdaptivityMode = FormLayoutAdaptivityMode.SingleColumnWindowLimit;   

//自适应模式:单一列窗口限制  或者 关闭

    settings.SettingsAdaptivity.SwitchToSingleColumnAtWindowInnerWidth = 600;
//切换到窗口内宽度的单列
    settings.Items.Add(m => m.EmployeeID, i => {    //提供一个选项框给Dome使用
        i.Caption = "Select record";
        i.Width = Unit.Percentage(33);
        i.NestedExtension().ComboBox(s => {    //ComboBox直接赋值的用法
            s.Properties.ClientSideEvents.ValueChanged = "UpdateLayoutForm";   //客户端事件:当值改变时调用JS
            s.Properties.ValueType = typeof(int);    //值的类型为int
            for(var j = 1; j <= 5; j++) {
                s.Properties.Items.Add("Employee #" + j, j);
            }
        });
    });

    settings.Items.AddEmptyItem();

    settings.Items.AddGroupItem(g => {
        g.Caption = "Personal Information";
        g.ColCount = 2;                //设置分列为2
        g.Items.Add(m => m.FirstName, i => {
            i.NestedExtension().TextBox(tb => {
                tb.Width = Unit.Percentage(100);
                tb.ShowModelErrors = true;            //有错误时是否显示Model验证信息

                tb.Properties.ValidationSettings.Display = Display.Dynamic

//验证显示的方式为动态  Static Dynamic None

                tb.Properties.ValidationSettings.ErrorDisplayMode = ErrorDisplayMode.None;

//验证错误时错误提示的显示方式 Text ImageWithTooltip ImageWithText None

            });
        });
        g.Items.Add(m => m.LastName, i => {
            i.NestedExtension().TextBox(tb => {
                tb.Width = Unit.Percentage(100);
                tb.ShowModelErrors = true;
                tb.Properties.ValidationSettings.Display = Display.Dynamic;
                tb.Properties.ValidationSettings.ErrorDisplayMode = ErrorDisplayMode.None;
            });
        });
        g.Items.Add(m => m.BirthDate);
    });

    settings.Items.AddGroupItem(g => {            //第二组
        g.Caption = "Work Information";
        g.ColCount = 2;
        g.Items.Add(m => m.Title, i => i.NestedExtensionSettings.Width = Unit.Percentage(100));
        g.Items.Add(m => m.HireDate, i => i.NestedExtensionSettings.Width = Unit.Percentage(100));
        g.Items.Add(m => m.Notes, i => { //Memo的定义方式
            i.Width = Unit.Percentage(100);     //跨列的写法
            i.NestedExtensionType = FormLayoutNestedExtensionItemType.Memo;
            i.NestedExtensionSettings.Width = Unit.Percentage(100);
            i.NestedExtensionSettings.Height = Unit.Pixel(71);
        });
    });

    settings.Items.Add(i => {        //定义按钮直接使用submite提交
        i.ShowCaption = DefaultBoolean.False; 
        i.CssClass = "buttonAlign";
        i.Width = Unit.Percentage(100);
        i.NestedExtension().Button(s => {
            s.Name = "applyButton";
            s.Text = "Update Record";
            s.UseSubmitBehavior = true;
            s.Width = Unit.Pixel(150);
        });
    });

}).GetHtml()


//View-----

@model EditableEmployee

@{
    Html.EnableClientValidation()//启用通过在浏览器中使用客户端脚本来执行的输入验证
    Html.EnableUnobtrusiveJavaScript();   //要启用不显眼的JavaScript。
}
@section AdditionalResources {

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>

//使用JQ的验证脚本

    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

//使用JQ不显眼的验证脚本

     < style   type = "text/css" >
             . buttonAlign   {    //按钮排列
                 text-align :   right   ! important ;    //靠右,最高优先级
             }

             @ @ media( max-width : 600px )   {      //与窗口缩放相关的对齐方式
                 . buttonAlign   {
                     text-align :   center   ! important ;
                 }
             }
     </ style >
}

< script   type = "text/javascript" >
     function   UpdateLayoutForm ( s ,   e )   {    //ajax数据提交
         $ . ajax ( {
             type :   "POST" ,            //提交方式
             url :   '@Url.Action("DataBindingPartial", "FormLayout")' //提交给的controller

            data: { employeeID: s.GetValue() },       

 //给后台提交的数据 键值对方式 键的名字与后台参数名要一致,不然接收不到数据

             success :   function ( response )   {        //定义回调函数:如果成功就返回一个值response
                 $ ( "#editableContainer" ) . html ( response ) //在容器中显示回调返回的值response
             }
         } ) ;
     }
</ script >

@ using   ( Html . BeginForm ( "DataBindingApplyChanges" ,   "FormLayout" ) )   //指定提交的controller
     < div   id = "editableContainer"   style = "max-width: 700px" >  
         @ Html . Partial ( "DataBindingPartial" ,   Model )
     </ div >
}

//controller-----

namespace DevExpress.Web.Demos {
    public partial class FormLayoutController: DemoController {
        public ActionResult DataBinding() {

            return DemoView("DataBinding", NorthwindDataProvider.GetEditableEmployees().First());   

//model等于一条信息

        }
        [HttpPost]
        public ActionResult DataBindingApplyChanges(EditableEmployee employee) {
            if(!ModelState.IsValid)   //没有错误信息
                return DemoView("DataBinding", employee);
            NorthwindDataProvider.UpdateEditableEmployee(employee);
            return DemoView("DataBinding", NorthwindDataProvider.GetEditableEmployeeByID(employee.EmployeeID));
        }
        public ActionResult DataBindingPartial(int employeeID) {
            return PartialView("DataBindingPartial", NorthwindDataProvider.GetEditableEmployeeByID(employeeID));
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值