FineUI 官方论坛

标题: 2个建议 [打印本页]

作者: Mad_Man    时间: 2014-9-2 16:43
标题: 2个建议
1,建议增加BIND属性。表单如下
                <f:SimpleForm ID="frmEdit" ShowBorder="false" ShowHeader="false" runat="server" BodyPadding="10px">
                    <Items>
                        <f:TextBox runat="server" ID="tbName" MaxLength="50" Label="指标分组名称" ShowRedStar="true" Required="true" Bind="INDEX_GROUP_NAME"></f:TextBox>
                        <f:NumberBox runat="server" ID="tbOrderIndex" Bind="ORDER_INDEX" ShowRedStar="true" Required="true" Label="部门序号"></f:NumberBox>
                    </Items>
                </f:SimpleForm>
如下,通过BIND属性后,让实体和表单完成绑定
frmEdit.SetDataSource(this.GetDB().INDEX_GROUP.FirstOrDefault(c => c.INDEX_GROUP_ID == id));这样就不用一个控件一个控件赋值了。
那么插入或者更新时如果反向给实体赋值呢?
var id = this.GetQueryGuidValue("id");
            if (id != Guid.Empty)
            {
                item = this.GetDB().INDEX_GROUP.FirstOrDefault(c => c.INDEX_GROUP_ID == id);
                if (item == null)
                {
                    Alert.ShowInTop("数据错误");
                    return;
                }
            }
            else
            {
                item = new INDEX_GROUP();
                item.INDEX_GROUP_ID = Guid.NewGuid();
                this.GetDB().INDEX_GROUP.Add(item);
            }
            item = frmEdit.UpdateData<INDEX_GROUP>(item);
            this.GetDB().SaveChanges();

请注意这句:frmEdit.UpdateData<INDEX_GROUP>(item);
2,为了偷懒,我又增加了MaxLength属性,使用如下
<f:TextBox runat="server" ID="tbMemo" MaxLength="50" Label="指标说明" ShowRedStar="true" Required="true" Bind="DESCRIPTION"></f:TextBox> 长度超过50个自动截断。
SetDataSource和UpdateData的源码已经发给版主了。请考虑一下。





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