Easyui datagrid 编辑结束时combobox显示value而不显示text
时间: 2023-08-07 16:05:20 浏览: 217
在 EasyUI Datagrid 编辑结束后, Combobox 显示 value 而不是 text 的原因可能是因为 Combobox 的数据源中没有包含对应的 text 属性。在 EasyUI 中,Combobox 的数据源可以是一个数组或者远程 URL,如果数据源是一个数组,那么每个选项应该是一个 JSON 对象,至少包含 value 和 text 属性。例如:
```
[
{value: 1, text: 'Option 1'},
{value: 2, text: 'Option 2'},
{value: 3, text: 'Option 3'}
]
```
如果 Combobox 显示的是 value 而不是 text,那么很可能是数据源中没有 text 属性。你可以检查一下数据源中的 JSON 对象是否包含 text 属性,如果没有,可以手动添加该属性并设置为与 value 属性相同的值。例如:
```
[
{value: 1, text: 'Option 1'},
{value: 2, text: 'Option 2'},
{value: 3, text: 'Option 3'},
{value: 4, text: 'Option 4', otherProperty: 'Other Value'}
]
```
在这个例子中,第四个选项没有 text 属性,你可以手动添加该属性并设置为 'Option 4'。这样 Combobox 就可以正确地显示 text 了。
相关问题
给我一个easyui datagrid editor选择年的例子
以下是一个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组件,设置数据源为年份列表即可。
easyui datagrid里某一列我使用了combobox作为editor,我在书写onselect事件的时候需要知道当前行的行号rowindex,如何获得?
在easyui中,当你使用combobox作为editor,并且想要在onselect事件中获取当前行的行号(rowindex),你可以通过combobox绑定的data属性来获取。首先确保combobox组件是在grid的formatter属性中定义的,并且设置了data属性与行数据相关联。然后在onselect事件的回调函数中,可以通过this触发上下文来访问当前combobox所在的单元格的行数据对象。
以下是一个简化的例子来说明如何实现:
```javascript
formatter : function(value, row, index) {
// 假设combobox的值与行数据的某个属性相关联,比如"comboboxValue"
return '<input type="text" class="easyui-combobox" style="width:100px" data-options="value:\'"+value+'\',onChange: function(newValue,oldValue){$(this).combobox("select",newValue);},data:\'"+row.id+'\'"/>';
}
```
在上面的formatter函数中,combobox的data-options设置了data属性,这里假设每行数据中有一个id字段用来表示行号。当combobox的值发生变化时,触发onChange事件,可以通过$(this)获取到当前combobox元素,然后通过.data()方法来获取data属性中存储的行号信息。
这样,你就可以在onselect事件中通过行数据对象获取到当前行的行号了。
阅读全文