jquery easyui 使用 combobox动态加载数据

首先引入相关js 和css

   <link href="css/themes/default/easyui.css" rel="stylesheet" type="text/css" />
    <link href="css/themes/icon.css" rel="stylesheet" type="text/css" />
    <script src="jq/jquery.min.js" type="text/javascript"></script>
    <script src="jq/jquery.easyui.min.js" type="text/javascript"></script>

前端代码

<script type="text/javascript">
        $(function () {
            $('#t1').combobox({   //初始化父级combobox控件
                url: 'Type.ashx?id=0',  //远程访问服务器端的地址
                editable: false,  //设置文本区域不能被编辑
                valueField: 'id',  //显示数据的键的值  
                textField: 'text', //显示数据的文本的值
                onLoadSuccess: function (data) {  //当成功加载数据后所引发的事件,data参数为 combobox中加载的值 以一个json类型的数组表示
                    $('#t1').combobox('setValue', data[0].id);//设置combobox中的首选项被选中
                },
                onSelect: function (rec) { //当选中combobox中的内容时候触发的事件 类似与change事件 参数rec 为当前选中项目的json 类型的数据  json中的键和值 应与  valueField和textField属性中的值一致 如 rec.id 为当前选中项的 id
                    t2.combobox({  
                        editable: false,
                        url: 'Type.ashx?id=' + rec.id,//向服务器端发送请求 带参数
                        valueField: 'id',
                        textField: 'text',
                        onLoadSuccess: function (data) {  
                            if (data.length <= 0) {  //判断如果子项中没有数据
                                $('#t2').combobox('clear').combobox('setValue', '无子分类');//设置子项中无子分类
                            }
                            else {
                              var t22= $('#t2').combobox('setValue', data[0].id).combobox('getData');//子项中的数据默认第一项被选中                             
                            }
                        }
                    }).combobox('clear');//从新加载子项中的数据应首先清空子项中的数据
                }
            });
            var t2 = $('#t2').combobox({  //初始化子项的combobox
                editable: false,
                valueField: 'id',
                textField: 'text'
            });
        });
       
        
    </script>
<body>
    <form id="form1" runat="server">
    <div>
   一级别分类: <select id="t1" style="width:80px;"></select>
   二级别分类: <select id="t2" style=" width:80px;"></select>
    </div>
    </form>
</body>

服务器端代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Web.Script.Serialization;
namespace jqeasyui
{
    /// <summary>
    /// Type 的摘要说明
    /// </summary>
    public class Type : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            int tid = 0;
            //判断是否第一次请求
            if (!string.IsNullOrEmpty(context.Request["id"]))
            {
                
                tid = int.Parse(context.Request["id"]);//获取父类中当前选中项目的id
            }
            web2Bll.TypeInfoBLL tpbll = new web2Bll.TypeInfoBLL();
            List<web2Model.TypeInfo> list = new List<web2Model.TypeInfo>();
            list=tpbll.GetListTypeInfo("  parentId="+tid,"");
            List<TypeModel> listModel = new List<TypeModel>();//创建一个自定义类型的集合  ,类中属性 id 和 text 需要和前端 valueField 和 textField 属性中的值一样
            foreach (web2Model.TypeInfo typeInfo in list)
            {
                listModel.Add(new TypeModel() { 
                 id=typeInfo.TypeId,  
                 text=typeInfo.TitleName
                });
            }
            JavaScriptSerializer js = new JavaScriptSerializer();//序列化集合转换成json 
            context.Response.Write(js.Serialize(listModel));//返回到前端 
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
   
}

combobox的其他方法,属性,事件

属性
groupField:
参数类型:string
说明:指示要被分组的字段。该属性自版本 1.3.4 起可用。
默认值:null
groupFormatter:
参数类型:function(group)
说明:返回要显示在分组项目上的分组文本。该属性自版本 1.3.4 起可用。
例如:

$('#cc').combobox({
	groupFormatter: function(group){
		return '<span style="color:red">' + group + '</span>';
	}
});

mode
参数类型:string
说明:定义在文本改变时如何加载列表数据。如果组合框(combobox)从服务器加载就设置为 ‘remote’。当设置为 ‘remote’ 模式时,用户输入的值将会被作为名为 ‘q’ 的 http 请求参数发送到服务器,以获取新的数据。
默认值:local

method:
参数类型:string
说明:用来检索数据的 http 方法。
默认值:post
data:
参数类型: arr
说明:被加载列表数据
例子;

<input class="easyui-combobox" data-options="
		valueField: 'label',
		textField: 'value',
		data: [{
			label: 'java',
			value: 'Java'
		},{
			label: 'perl',
			value: 'Perl'
		},{
			label: 'ruby',
			value: 'Ruby'
		}]" />

默认值:null
filter:
参数类型:function
说明:定义如何呈现行。该函数有一个参数:row。
例子:

$('#cc').combobox({
	filter: function(q, row){
		var opts = $(this).combobox('options');
		return row[opts.textField].indexOf(q) == 0;
	}
});

formatter
参数:function(row) row为行内容
说明:如何呈现行
例子

$('#cc').combobox({
	formatter: function(row){
		var opts = $(this).combobox('options');
		return row[opts.textField];
	}
});

loader:
参数:function(param,success,error)
说明:定义如何从远程服务器加载数据。返回 false 则取消该动作。该函数有下列参数:
param:要传到远程服务器的参数对象。
success(data):当获取数据成功时将被调用的回调函数。
error():当获取数据失败时将被调用的回调函数。
默认值:json loader
事件
onBeforeLoad
参数:param
说明:在请求加载数据之前触发,返回 false 则取消加载动作。
例子

 
$('#cc').combobox({
	onBeforeLoad: function(param){
		param.id = 2;
		param.language = 'js';
	}
});

onLoadError
说明:当远程数据加载失败时触发。
onUnselect
参数:record
说明:当用户取消一个列表项时触发。

方法
getData
说明:返回加载的数据。
loadData
参数 data
说明:加载本地列表数据。

reload
参数: url
说明:请求远程的列表数据。传 ‘url’ 参数来重写原始的 URL 值。
例子:

$('#cc').combobox('reload');  // reload list data using old URL
$('#cc').combobox('reload','get_data.php');  // reload list data using new URL

setValues
参数 values
设置组合框(combobox)值的数组值。
如:

$('#cc').combobox('setValues', ['001','002']);

setValue
设置组合框值
getValue
获取组合框的值

var t1=$('#cc').combobox('getValue');

select , unSelect
获取选中的项目 ,取消选中的项目
clear
清空所有的项目

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我来给您讲一讲如何实现 EasyUI Combobox 的 AJAX 分页和默认值扩展。 首先,我们需要在服务器端提供一个接口,用于返回分页数据。这个接口需要接受两个参数,一个是当前页数,另一个是每页显示的记录数。然后根据这两个参数进行数据查询,最后将查询结果返回给客户端。 接下来,我们需要在客户端的 Combobox 中配置 AJAX 分页参数。具体来说,我们需要设置以下几个属性: - url:指定服务器端接口的地址。 - method:指定 AJAX 请求的 HTTP 方法,可以是 GET 或 POST。 - queryParams:指定请求参数,包括当前页数和每页显示的记录数。 - loadFilter:指定请求成功后如何处理返回的数据,这里需要将数据格式转换成 Combobox 能够接受的格式。 下面是一个示例代码: ```javascript $('#combobox').combobox({ url: 'http://example.com/data', method: 'get', queryParams: { page: 1, rows: 10 }, loadFilter: function(data){ var result = []; for(var i=0; i<data.rows.length; i++){ result.push({ value: data.rows[i].id, text: data.rows[i].name }); } return result; } }); ``` 其中,`data` 是从服务器端返回的数据,包括 `total`(总记录数)和 `rows`(当前页的记录列表)。在 `loadFilter` 函数中,我们将 `rows` 转换成 Combobox 能够接受的格式,即 `{value: id, text: name}`。 接下来,我们需要实现默认值扩展。具体来说,我们需要在 Combobox 中添一个“全部”或“请选择”选项,并将其作为默认选项。当用户选择这个选项时,我们需要清空 Combobox 中的其他选项。 以下是一个示例代码: ```javascript $('#combobox').combobox({ valueField: 'id', textField: 'name', data: [{ id: '', name: '全部' }, { id: 1, name: '选项1' }, { id: 2, name: '选项2' }], onSelect: function(record){ if(record.id === ''){ $(this).combobox('clear'); } } }); ``` 其中,我们在数据中添了一个空值选项(id 为空),并将其名称设为“全部”。在 `onSelect` 事件中,当用户选择了空值选项时,我们调用 `clear` 方法清空 Combobox 中的其他选项。 以上就是 EasyUI Combobox 的 AJAX 分页和默认值扩展的实现方法。希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值