【原】提高篇:第二十八篇,ext2.2打造Ext.form.ComboBox系列--分页显示

本篇介绍了将分页数据动态绑定到Ext.form.ComboBox,采取后台读数据库的方式.支持手写和联想功能,还提供显示提示消息的效果和改变ComboBox的宽度和高度. 这里最主要的是要在后台处理分页数据返回到前台.

效果图如下:

前台代码如下:

<form id="form1" runat="server">
    <br />
    <div><div id="hello"></div>
    <script type="text/javascript">   
    //动态绑定数据
    function ready()
    {      
        Ext.QuickTips.init();
        //分页ComboBox 只要设置pageSize属性即可
        var store = new Ext.data.Store
        ({
                proxy: new Ext.data.HttpProxy({url:"comboJson.aspx?Flag=0"}), // 数据源               
                reader: new Ext.data.JsonReader({totalProperty:"totalPorperty",root:"result",fields:[{name: 'ID'},{name: 'TypeCName'}]})// 如何解析
        });      
        store.load({params:{start:0,limit:6}});
        var comboBox = new Ext.form.ComboBox
        ({    
            tpl: '<tpl for="."><div ext:qtip="提示:ID={ID};TypeCName={TypeCName}" class="x-combo-list-item">{TypeCName}</div></tpl>',
            id:"ComboBox_ID",
            editable:true,//默认为true,false为禁止手写和联想功能
            store:store,
            emptyText:'请选择',
            mode: 'remote',//指定数据加载方式,如果直接从客户端加载则为local,如果从服务器断加载 则为remote.默认值为:remote
            typeAhead: true,
            triggerAction: 'all',
            valueField:'ID', 
            displayField:'TypeCName',
            selectOnFocus:true,
            renderTo:'hello',
            width:240,
            border:true,
            frame:true,
            resizable:true,
            pageSize:6//当元素加载的时候,如果返回的数据为多页,则会在下拉列表框下面显示一个分页工具栏,该属性指定每页的大小
            //在点击分页导航按钮时,将会作为start及limit参数传递给服务端,默认值为0,只有在mode='remote'的时候才能够使用          
        });       
    }
    Ext.onReady(ready);
    </script>
    </div>
    </form>

后台代码如下:

protected void Page_Load(object sender, EventArgs e)
{
    string param = Request.QueryString["Flag"];
    switch (param)
    {
        case "0"://代表分页
            {
                #region 分页
                int pagesize = 5;
                int start = 1;
                string field, asc_desc;
                if (string.IsNullOrEmpty(Request["sort"]))
                {
                    field = "ID";
                    asc_desc = "ASC";
                }
                else
                {
                    field = Request["sort"];
                    asc_desc = Request["dir"];
                }
                if (!string.IsNullOrEmpty(Request["limit"]))
                {
                    pagesize = int.Parse(Request["limit"]);
                    start = int.Parse(Request["start"]);
                }
                start = start / pagesize;
                start += 1;
                #endregion
                Bind_PagingData(field, asc_desc, pagesize, start);
            }
            break;
        case "1"://代表不分页
            {
                Bind_AllData();
            }
            break;
        default:
            {
            }
            break;
    }
}
//分页
private void Bind_PagingData(string field, string asc_desc, int pagesize, int start)
{
    DataSet ds = CommonUtil.PaginationByTableName(field, asc_desc, pagesize, start, "TypeTable");
    string json = "";
    if (ds != null && ds.Tables[0].Rows.Count > 0)
    {
        json = CommonUtil.GetJsonString(ds);
        int count = CommonUtil.GetCountBySql("Select count(*) from TypeTable");
        json = "{totalPorperty:" + count + ",result:" + json + "}";
    }
    else
    {
        json = "错误";
    }
    Response.Write(json);
}

posted @ 2008-11-03 10:04 殷良胜 阅读(1587) 评论(10)  编辑 收藏 网摘

  回复  引用  查看    
#1楼[楼主]2008-11-03 12:37 | 殷良胜      
  回复  引用    
#2楼2008-11-29 18:02 | 山里来的孩子[未注册用户]
博主,请问如何通过ComboBox实现动态模糊查询?ComboBox下的queryParam应该怎么绑定我要传的参数code呢?
  回复  引用  查看    
#3楼[楼主]2008-12-01 08:33 | 殷良胜      
@山里来的孩子
有源代码吗
发给我看看吧

  回复  引用    
#4楼2009-05-27 12:54 | 雷lei [未注册用户]
请问楼主,那个“实现动态模糊查询”触发的是什么事件啊?谢谢了
  回复  引用    
#5楼2009-05-27 12:59 | 雷lei [未注册用户]
也就是一个combobox,从数据库读取数据,在combobox内输入文字的时候,自动从数据库中查询与输入的文字相匹配的记录,如何将输入的文字传递给后台程序阿?此时应该触发什么事件?麻烦楼主了
  回复  引用  查看    
#6楼[楼主]2009-05-28 22:37 | 殷良胜      
--引用--------------------------------------------------
雷lei : 也就是一个combobox,从数据库读取数据,在combobox内输入文字的时候,自动从数据库中查询与输入的文字相匹配的记录,如何将输入的文字传递给后台程序阿?此时应该触发什么事件?麻烦楼主了
--------------------------------------------------------
恩 其实 在你输入数据之前 数据就已经绑定到combobox里面了
你在输入数据时 是对缓存在客户端的数据进行的匹配 与后台不相干的
这是由combobox的内部机制实现的 它的源代码你有时间可以研究
相信能够有更多的收获

  回复  引用    
#7楼2009-05-31 15:39 | 雷lei [未注册用户]
好的,谢谢楼主大哥!
  回复  引用    
#8楼2009-06-03 10:56 | zhao_hu[未注册用户]
楼主大哥,对于这个combobox控件,如果想在选项的最下面添加一个固定的选项比如“添加”,为了弹出一个窗口来添加新的选项内容!实现这个功能,您有什么思路吗?
  回复  引用  查看    
#9楼[楼主]2009-06-03 12:27 | 殷良胜      
--引用--------------------------------------------------
zhao_hu: 楼主大哥,对于这个combobox控件,如果想在选项的最下面添加一个固定的选项比如“添加”,为了弹出一个窗口来添加新的选项内容!实现这个功能,您有什么思路吗?
--------------------------------------------------------
那就直接在里面添加 接着绑定事件就可以了

  回复  引用  查看    
#10楼2009-06-16 09:18 | 咸鱼翻身      
数据显示了
下一步如何取得当前用户选中的数据了
谢谢指导

发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1325221




相关文章:

相关链接: