[easyui]datagrid新增一行编辑时,给editor:'numberbox'赋初值不成功的解决办法

场景

页面有一个datagrid,是通过行编辑来进行增删改查的,
有一个fieldeditornumberbox

需求

想在新增一行的时候,让这个editor默认显示为0

通常做法

editor:{type:'numberbox',value:0}

但是发现,点了增加之后,editor还是显示空值,起初还觉得这不应该啊,后来想到问题所在

原因

每次beginEdit之后,所有的editor都会从当前的row去获取值,
而在新增的时候,当前的row为空啊,所有字段都是空值,所以这里自然显示为空

解决办法

就是在appendRow的时候,给字段赋值

dg.datagrid('appendRow',{fieldName:defaultValue});
以下是一个EasyUI datagrid editor选择年的例子: HTML代码: ``` <table id="dg" title="用户列表" class="easyui-datagrid" style="width:700px;height:250px" url="get_users.php" toolbar="#toolbar" rownumbers="true" pagination="true" singleSelect="true" fitColumns="true" data-options="onDblClickRow:onDblClickRow"> <thead> <tr> <th field="id" width="50">ID</th> <th field="name" width="100">姓名</th> <th field="age" width="50">年龄</th> <th field="gender" width="50">性别</th> <th field="birthday" width="100" editor="{type:'datebox',options:{required:true}}">生日</th> </tr> </thead> </table> <div id="toolbar"> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newUser()">添加用户</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onclick="editUser()">编辑用户</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="destroyUser()">删除用户</a> </div> <div id="dlg" class="easyui-dialog" style="width:400px;height:280px;padding:10px 20px" closed="true" buttons="#dlg-buttons"> <div class="ftitle">用户信息</div> <form id="fm" method="post" novalidate> <div class="fitem"> <label>姓名:</label> <input name="name" class="easyui-validatebox" required="true"> </div> <div class="fitem"> <label>年龄:</label> <input name="age" class="easyui-numberbox" required="true"> </div> <div class="fitem"> <label>性别:</label> <select name="gender" class="easyui-combobox" required="true"> <option value="男">男</option> <option value="女">女</option> </select> </div> <div class="fitem"> <label>生日:</label> <input name="birthday" class="easyui-datebox" required="true"> </div> </form> </div> <div id="dlg-buttons"> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="saveUser()">保存</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="$('#dlg').dialog('close')">取消</a> </div> ``` JavaScript代码: ``` $(function(){ $('#dg').datagrid({ onClickRow: function(index, row){ // 单击行事件 $('#dg').datagrid('beginEdit', index); // 开始编辑 } }); }); function newUser(){ $('#dlg').dialog('open').dialog('setTitle','添加用户'); $('#fm').form('clear'); } function editUser(){ var row = $('#dg').datagrid('getSelected'); if (row){ $('#dlg').dialog('open').dialog('setTitle','编辑用户'); $('#fm').form('load',row); } } function destroyUser(){ var row = $('#dg').datagrid('getSelected'); if (row){ $.messager.confirm('确认','您确定要删除此用户吗?',function(r){ if (r){ $.post('destroy_user.php',{id:row.id},function(result){ if (result.success){ $('#dg').datagrid('reload'); // 重新加载数据 } else { $.messager.show({ // 弹出消息框 title: 'Error', msg: result.errorMsg }); } },'json'); } }); } } function saveUser(){ $('#fm').form('submit',{ url: 'save_user.php', onSubmit: function(){ return $(this).form('validate'); }, success: function(result){ var result = eval('('+result+')'); if (result.success){ $('#dlg').dialog('close'); // 关闭对话框 $('#dg').datagrid('reload'); // 重新加载数据 } else { $.messager.show({ // 弹出消息框 title: 'Error', msg: result.errorMsg }); } } }); } ``` 在上面的代码中,我们使用了EasyUI的datebox组件作为datagrid中生日列的编辑器,这个组件可以选择年月日。 如果你只想选择年份,可以使用EasyUI的combobox组件,设置数据源为年份列表即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值