找回密码
 立即注册

QQ登录

只需一步,快速开始

workaholic
论坛元老   /  发表于:2013-10-25 22:06  /   查看:7199  /  回复:7
请问,我通过查询得到了一个Datatable,现在需要将这个table表里边的两个字段ChannelName 和ChannelID绑定到C1Combo上,ChannelName作为DisplayMember, ChannelID作为ValueMember;如何用代码而不是在属性那儿直接绑定实现?

7 个回复

倒序浏览
combo
新手上路   /  发表于:2013-10-26 00:11:00
沙发
/// <summary>
        /// 设置C1Combo标题样式
        /// </summary>
        /// <param name="C1Combo">C1Combo</param>
        /// <param name="code">数据字段</param>
        /// <param name="name">中文名称</param>
        /// <param name="visible">是否显示</param>
        /// <param name="width">宽度(number,-1为自动适应)</param>
        /// <param name="align">对齐方式</param>
        public static void setComboStyle(C1.Win.C1List.C1Combo C1Combo,string code,string name,bool visible,int width)
        {
            C1.Win.C1List.C1DisplayColumnCollection cols = C1Combo.Splits[0].DisplayColumns;
            C1.Win.C1List.C1DisplayColumn dcol = cols[code];
            dcol.Visible = visible;

            C1.Win.C1List.C1DataColumn col = cols[code].DataColumn;
            col.Caption = name;
            cols[code].HeadingStyle.Font = new Font(new FontFamily("宋体"), 10);
            cols[code].HeadingStyle.VerticalAlignment = C1.Win.C1List.AlignVertEnum.Center;//C1.Win.C1TrueDBGrid.AlignVertEnum.Center;
            cols[code].HeadingStyle.HorizontalAlignment = C1.Win.C1List.AlignHorzEnum.Center;// C1.Win.C1TrueDBGrid.AlignHorzEnum.Center;
            //设置宽度
            if (width < 0)
            {
                cols[code].AutoSize();
            }
            else
            {
                cols[code].Width = width;
            }
        }

c1combo.DataSource=dt;
不过我想搞清楚的是怎么在combo那个输入文字,然后指定检索例,定位后,回车得到相应的text 与 value
回复 使用道具 举报
combo
新手上路   /  发表于:2013-10-26 00:12:00
板凳
怎么操作dropdown list有没有例子看一下就好了。
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2013-10-28 09:34:00
地板
回复 1楼workaholic的帖子

Winform 下C1Combo绑定一个自定义DataTable代码如下:
  1. private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             DataTable dt = new DataTable();
  4.             dt.Columns.Add(&quot;name&quot;);
  5.             dt.Columns.Add(&quot;age&quot;);
  6.             dt.Columns.Add(&quot;ChannelName&quot;);
  7.             dt.Columns.Add(&quot;ChannelID&quot;);

  8.             for (int i = 0; i &lt; 3; i++)
  9.             {
  10.                 dt.Rows.Add(&quot;name&quot; + i, &quot;age&quot; + i, &quot;ChannelName&quot; + i, &quot;ChannelID&quot; + i);
  11.             }

  12.             c1Combo1.DisplayMember = &quot;ChannelName&quot;;
  13.             c1Combo1.ValueMember = &quot;ChannelID&quot;;

  14.             c1Combo1.DataSource = dt;
  15.         }

  16.         private void c1Combo1_[b]SelectedValueChanged[/b](object sender, EventArgs e)
  17.         {
  18.            string text = c1Combo1.SelectedText;
  19.             object value = c1Combo1.SelectedValue;
  20.         }
复制代码


效果截图如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2013-10-28 10:04:00
5#
回复 3楼combo的帖子

凌晨0点还发帖子,作为学习的软件从业者,向你致敬!  

你的这个问题,可以试试这样做:

注意:我测试过程中,只有在C1Combo输入DisplayMember的东西, Combox里面的才跟着变。 [绑定啥,啥才有效。]

  1.   private void c1Combo1_KeyDown(object sender, KeyEventArgs e)
  2.         {
  3.             if (e.KeyValue == 13) //判断回车事件
  4.             {
  5.                 MessageBox.Show(string.Format(&quot;text : {0}, value: {1}&quot;, c1Combo1.SelectedText, c1Combo1.SelectedValue));
  6.             }
  7.         }
复制代码
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2013-11-5 09:33:00
6#
回复 1楼workaholic的帖子

C1Combo绑定DataTable的这个问题,进展的怎么样了?
回复 使用道具 举报
workaholic
论坛元老   /  发表于:2013-11-6 15:56:00
7#
回复 6楼roger.wang的帖子

已经好了,多谢
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2013-11-6 15:59:00
8#
回复 7楼workaholic的帖子

客气了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部