找回密码
 立即注册

QQ登录

只需一步,快速开始

vbagcl

初级会员

24

主题

100

帖子

210

积分

初级会员

积分
210

活字格认证微信认证勋章

vbagcl
初级会员   /  发表于:2011-9-27 22:26  /   查看:7165  /  回复:7
new C1.Web.UI.Controls.C1ComboBox.C1ComboBox com = new C1.Web.UI.Controls.C1ComboBox.C1ComboBox();
            com.ID = "aaaaaaaa";
            com.Width = 120;
            com.DropDownHeight = 190;
com 没有OnItemsRequested 选项,利用OnClientItemsRequested 如下所示,不能触发定义的函数。请指点,多谢!
            com.OnClientItemsRequested = "Requested";
            this.C1.Controls.Add(com);

注:C1是一个panel,画面能看到生成的C1ComboBox,就是不能触发下拉事件。我用静态可以实现。

7 个回复

倒序浏览
gw0506
超级版主   /  发表于:2011-9-28 09:21:00
沙发
我不太理解你描述的case。

C1是一个panel指的是什么?不能触发定义的函数指的是哪一个函数?

另外,你是想动态加载ComboBox的下拉框中的item吗?
回复 使用道具 举报
vbagcl
初级会员   /  发表于:2011-9-28 11:08:00
板凳
C1是一个panel是指,将生成的ComboBox加载至页面的一个panel中。
需要触发的函数是:
protected void Requested(object sender, C1.Web.UI.Controls.C1ComboBox.C1ComboBoxItemsRequestedEventArgs args)
        {
              sqlstr = "select CD, CD_NAME from bbb_cd  where cd_name like '" + args.FilterText + "%'";
            System.Data.DataTable dt = exe_sql_table(sqlstr, ref rnt, ref cnt);
            int itemOffset = args.ClientItemsNumber;
            int endOffset = Math.Min(itemOffset + 10, dt.Rows.Count);
            args.EndOfItems = endOffset == dt.Rows.Count;

            for (int i = itemOffset; i < endOffset; i++)
            {
                C1.Web.UI.Controls.C1ComboBox.C1ComboBoxItem item = new C1.Web.UI.Controls.C1ComboBox.C1ComboBoxItem(dt.Rows["CD_NAME"].ToString(), dt.Rows["CD"].ToString());
                com.Items.Add(item);
            }
            int count = dt.Rows.Count;
            if (count == 0)
            {
                args.Message = "No Match Found";
            }
            else
            {
                args.Message = String.Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>", endOffset, dt.Rows.Count);
            }

        }

exe_sql_table 是我自己写的一个获取数据的函数。
回复 使用道具 举报
vbagcl
初级会员   /  发表于:2011-9-28 11:10:00
地板
多谢指点!
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-9-28 12:12:00
5#
  1. comboBox.EnableCallBackMode = true;
  2. comboBox.ItemsRequested += new C1.Web.UI.Controls.C1ComboBox.C1ComboBoxItemsRequestedHandler(Requested);
复制代码

尝试上面的代码。

com.OnClientItemsRequested = &quot;Requested&quot;;这句是说在前台使用OnClientitemRequested事件。它不会调用后台的方法。
回复 使用道具 举报
vbagcl
初级会员   /  发表于:2011-9-28 12:38:00
6#
可以啦,谢谢!
回复 使用道具 举报
vbagcl
初级会员   /  发表于:2011-9-28 14:40:00
7#
版主您好!再麻烦您一次!
我上面提的问题,效果是达到啦,但每次在C1ComboBox录入数据,整个页面的数据都在刷新,速度会很慢,用什么方法使只刷新C1ComboBox的数据,页面上其他数据不刷新呢。
我在网上查过,好像需要结合ajax技术,但如何结合,我不懂。
请指点,多谢,多谢!
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-9-30 17:22:00
8#
有关AJAX的想过内容比较多,为了能够让你有详细的了解,请访问在线文档。地址如下:
http://helpcentral.componentone.com/nethelp/c1combobox/
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部