ComboBox 要注意的几个小问题

合集下载

彻底了解combobox和listbox的‘脾气’!

彻底了解combobox和listbox的‘脾气’!

彻底了解combobox和listbox的‘脾气’!彻底了解combobox和listbox的‘脾气’! 许多朋友对这两个控件好象不太能掌握,我把我在使用中得出的一些经验贴出来1)为什么在combobox中是空白,一定要用鼠标下拉点击后才能显示某个数据?为什么在listbox初始的时候,焦点移动到list却没有任何item被选中?答:这两个问题其实是同一个问题,请关注controlsource这个属性,就能解决了。

controlsource决定了它绑定的数据的变量或属性,通常请将controlsource='ment'。

首先你一定已经定义了rowsource和rowsourcetype. 假设数据源是个表(employee), 数据源列为name。

那么请在comment属性中填写:= 假设数据源是个数组(employee()), 而你要在初始的时候显示(或选中)employee(1)中的值。

那么请在comment 属性中填写:=employee(1)这样定义后,你可以发现,不用用鼠标选择,combobox/listbox就会有一个值被选中了。

而且你也不用新建属性来定义当前值了。

在接下来的时候.value永远等于.comment 中的值。

另外你不用去管displayvalue这个属性。

使用controlsource来定向控制源还有一个好处,假如你要在这张表中查询一条记录(如name='John'),通常的做法是:select employee locate all for name='John' thisform.list1.refresh 其实不必,只要:ment='John' thisform.list1.refresh 就可以了。

combo/list的value只受controlsource定向的变量/属性所控制 2)有一张表作为combobox/listbox的数据源,为什么我删除了当前行后,用refresh没有用,那条记录仍然在?答:这个问题也很普遍。

combobox.selectedindex

combobox.selectedindex

ComboBox.SelectedIndex的使用问题1、任何时候,SelectedIndex变化都触发SelectedIndexChanged事件。

2.1、重新生成列表(先清空再添加)时:ComboBox显示空,但SelectedIndex保持不变。

2.2、重新绑定列表(ResetBinding)时:ComboBox会努力保持SelectedIndex不变;当SelectedIndex小于等于新列表的最大下标时,CombBox会显示新列表相应位置的项;但当SelectedIndex大于列表的最大下标时,ComboBox会先将SelectedIndex置为新列表的最大下标,然后再重新绑定列表,ComboBox显示新列表中新SelectedIndex处的值。

但千万不要以在这种情况下,SelectedIndexChanged 中就能获得与界面一致的值,因为ComboBox在绑定新列表之前重置SelectedIndex 的值,因此,你在SelectedIndexChanged中获得的只是旧列表的值。

3、在初次将列表绑定到数据源时:ComboBox会显示列表中第一个选项,但SelectedIndex仍然是-1。

由于SelectedIndex的以上特性,若ComboBox使用绑定列表并且列表会变化,则在使用SelectedIndexChanged事件实时将ComboBox的显示项映射到内部数据时,必须加以小心。

否则将极有可能内部数据与界面显示数据不一致。

我还尝试过使用SelectedValueChanged事件来代替SelectedIndexChanged事件,但是发现SelectedValueChanged事件与SelectedIndexChanged的唯一区别在于:当使用ComboBox列表绑定,用户尚未进行过选择操作时,SelectedValueChanged 会在ComboBox的显示值变化时被触发。

Winform桌面应用程序中Combobox三级下拉菜单连动问题的解决方案

Winform桌面应用程序中Combobox三级下拉菜单连动问题的解决方案

.Net之Winform桌面应用程序中Combobox三级下拉菜单连动问题地解决方案收藏由于上传数据库不方便,所以,就直接使用XML文件做数据库吧.这是实现后地效果截图:三级菜单对应地XML文件(数据库):第一级:省/直辖市,对应地XML文件:Location_Province.xml第二级:地/市级,对应地XML文件:Location_City.xml第三级:县/区级,对应地XML文件:Location_Area.xml以下为三个XML文件,其中第一级为全部,由于文件太大,所以第二三级为部分XML代码片段.(1)省/直辖市,对应地XML文件:Location_Province.xml<?xml version="1.0" standalone="yes"?><NewDataSet><xs:schema id="NewDataSet" xmlns="" xmlns:xs="/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="Table"><xs:complexType><xs:sequence><xs:element name="id" type="xs:int" minOccurs="0" /><xs:element name="province" type="xs:string" minOccurs="0" /><xs:element name="provinceID" type="xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><Table><id>1</id><province>北京市</province><provinceID>110000</provinceID></Table><Table><id>2</id><province>天津市</province><provinceID>120000</provinceID></Table><Table><id>3</id><province>河北省</province><provinceID>130000</provinceID> </Table><Table><id>4</id><province>山西省</province><provinceID>140000</provinceID> </Table><Table><id>5</id><province>内蒙古自治区</province> <provinceID>150000</provinceID> </Table><Table><id>6</id><province>辽宁省</province><provinceID>210000</provinceID> </Table><Table><id>7</id><province>吉林省</province><provinceID>220000</provinceID> </Table><Table><id>8</id><province>黑龙江省</province><provinceID>230000</provinceID> </Table><Table><id>9</id><province>上海市</province><provinceID>310000</provinceID> </Table><Table><id>10</id><province>江苏省</province><provinceID>320000</provinceID> </Table><Table><id>11</id><province>浙江省</province><provinceID>330000</provinceID> </Table><Table><id>12</id><province>安徽省</province><provinceID>340000</provinceID></Table><Table><id>13</id><province>福建省</province><provinceID>350000</provinceID></Table><Table><id>14</id><province>江西省</province><provinceID>360000</provinceID></Table><Table><id>15</id><province>山东省</province><provinceID>370000</provinceID></Table><Table><id>16</id><province>河南省</province><provinceID>410000</provinceID></Table><Table><id>17</id><province>湖北省</province><provinceID>420000</provinceID></Table><Table><id>18</id><province>湖南省</province><provinceID>430000</provinceID></Table><Table><id>19</id><province>广东省</province><provinceID>440000</provinceID></Table><Table><id>20</id><province>广西壮族自治区</province> <provinceID>450000</provinceID></Table><Table><id>21</id><province>海南省</province><provinceID>460000</provinceID> </Table><Table><id>22</id><province>重庆市</province><provinceID>500000</provinceID> </Table><Table><id>23</id><province>四川省</province><provinceID>510000</provinceID> </Table><Table><id>24</id><province>贵州省</province><provinceID>520000</provinceID> </Table><Table><id>25</id><province>云南省</province><provinceID>530000</provinceID> </Table><Table><id>26</id><province>西藏自治区</province> <provinceID>540000</provinceID> </Table><Table><id>27</id><province>陕西省</province><provinceID>610000</provinceID> </Table><Table><id>28</id><province>甘肃省</province><provinceID>620000</provinceID> </Table><Table><id>29</id><province>青海省</province><provinceID>630000</provinceID> </Table><Table><id>30</id><province>宁夏回族自治区</province><provinceID>640000</provinceID></Table><Table><id>31</id><province>新疆维吾尔自治区</province><provinceID>650000</provinceID></Table><Table><id>32</id><province>台湾省</province><provinceID>710000</provinceID></Table><Table><id>33</id><province>香港特别行政区</province><provinceID>810000</provinceID></Table><Table><id>34</id><province>澳门特别行政区</province><provinceID>820000</provinceID></Table></NewDataSet>第二级:地/市级,对应地XML文件:Location_City.xml<?xml version="1.0" standalone="yes"?><NewDataSet><xs:schema id="NewDataSet" xmlns="" xmlns:xs="/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="Table"><xs:complexType><xs:sequence><xs:element name="id" type="xs:int" minOccurs="0" /><xs:element name="city" type="xs:string" minOccurs="0" /><xs:element name="cityID" type="xs:string" minOccurs="0" /><xs:element name="father" type="xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><Table><id>1</id><city>市辖区</city><cityID>110100</cityID><father>110000</father></Table><Table><id>2</id><city>县</city><cityID>110200</cityID><father>110000</father></Table><Table><id>3</id><city>市辖区</city><cityID>120100</cityID><father>120000</father></Table><Table><id>4</id><city>县</city><cityID>120200</cityID><father>120000</father></Table><!-- //这里还有N多个--></NewDataSet>第三级:县/区级,对应地XML文件:Location_Area.xml<?xml version="1.0" standalone="yes"?><NewDataSet><xs:schema id="NewDataSet" xmlns="" xmlns:xs="/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="Table"><xs:complexType><xs:sequence><xs:element name="id" type="xs:int" minOccurs="0" /><xs:element name="area" type="xs:string" minOccurs="0" /><xs:element name="areaID" type="xs:string" minOccurs="0" /><xs:element name="father" type="xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><Table><id>1</id><area>东城区</area><areaID>110101</areaID><father>110100</father></Table><Table><id>2</id><area>西城区</area><areaID>110102</areaID><father>110100</father></Table><Table><id>3</id><area>崇文区</area><areaID>110103</areaID><father>110100</father></Table><Table><id>4</id><area>宣武区</area><areaID>110104</areaID><father>110100</father></Table><Table><id>5</id><area>朝阳区</area><areaID>110105</areaID><father>110100</father></Table><Table><id>6</id><area>丰台区</area><areaID>110106</areaID><father>110100</father> </Table><Table><id>7</id><area>石景山区</area> <areaID>110107</areaID> <father>110100</father> </Table><Table><id>8</id><area>海淀区</area><areaID>110108</areaID> <father>110100</father> </Table><Table><id>9</id><area>门头沟区</area> <areaID>110109</areaID> <father>110100</father> </Table><Table><id>10</id><area>房山区</area><areaID>110111</areaID> <father>110100</father> </Table><Table><id>11</id><area>通州区</area><areaID>110112</areaID> <father>110100</father> </Table><Table><id>12</id><area>顺义区</area><areaID>110113</areaID> <father>110100</father> </Table><Table><id>13</id><area>昌平区</area><areaID>110114</areaID> <father>110100</father> </Table><Table><id>14</id><area>大兴区</area><areaID>110115</areaID><father>110100</father></Table><Table><id>15</id><area>怀柔区</area><areaID>110116</areaID><father>110100</father></Table><Table><id>16</id><area>平谷区</area><areaID>110117</areaID><father>110100</father></Table><Table><id>17</id><area>密云县</area><areaID>110228</areaID><father>110200</father></Table><Table><id>18</id><area>延庆县</area><areaID>110229</areaID><father>110200</father></Table><!-- //这里还有N多个--></NewDataSet>这里先讲一下三者之间地关系:三个文件中分别有<provinceID>110000</provinceID><cityID>110100</cityID><areaID>110229</areaID>之类地ID号,它们都是唯一地.而City,Area一级中都存在一个:<father>110000</father>之类地元素,分别与其父级相应ID 号对应.这样,三级菜单之间就关联起来了.关键代码:为方便描述,示意一下放代码地区域:namespace AgencyWingoon{public partial class CompanyInfoForm : Form{// A区}}将DataSet, DataTable相关变量放在上述地A区内:DataSet dsProvince = null;DataSet dsCity = null;DataSet dsArea = null;DataTable dtProvince = null;DataTable dtCity = null;DataTable dtArea = null;Form_Load事件中:(也放A区内)private void CompanyInfoForm_Load(object sender, EventArgs e){//初始化下拉菜单:InitLocation();//下面是其他代码// .....}以下代码全部也放在A区内:private void InitLocation(){string xmlFileLocation_Province = @"./Location/Location_Province.xml";string xmlFileLocation_City = @"./Location/Location_City.xml";string xmlFileLocation_Area = @"./Location/Location_Area.xml";//从XML文件中读取记录,加载为DataSetdsProvince = new DataSet();dsProvince.ReadXml(xmlFileLocation_Province);dtProvince = dsProvince.Tables[0];dsCity = new DataSet();dsCity.ReadXml(xmlFileLocation_City);dtCity = dsCity.Tables[0];dsArea = new DataSet();dsArea.ReadXml(xmlFileLocation_Area);dtArea = dsArea.Tables[0];BindProvinceData();}// cmbBoxProvince 省/直辖市下拉菜单选项变化时地事件:private void cmbBoxProvince_SelectedIndexChanged(object sender, EventArgs e){BindCityData();this.cmbBoxCity.SelectedIndex = 0;BindAreaData();this.cmbBoxArea.SelectedIndex = 0;}// cmbBoxCity 地/市级下拉菜单选项变化时地事件:private void cmbBoxCity_SelectedIndexChanged(object sender, EventArgs e){BindAreaData();this.cmbBoxArea.SelectedIndex = 0;}// 绑定省/直辖市数据private void BindProvinceData(){cmbBoxProvince.DataSource = dtProvince;cmbBoxProvince.DisplayMember = "province";cmbBoxProvince.ValueMember = "provinceID";}// 绑定地/市级数据private void BindCityData(){string provinceId = dtProvince.Rows[this.cmbBoxProvince.SelectedIndex]["provinceID"].ToString();dtCity.DefaultView.RowFilter = "father = " + provinceId;cmbBoxCity.DataSource = dtCity.DefaultView;cmbBoxCity.DisplayMember = "city";cmbBoxCity.ValueMember = "cityID";}// 绑定县/区级数据private void BindAreaData(){string provinceId = dtProvince.Rows[this.cmbBoxProvince.SelectedIndex]["provinceID"].ToString();dtCity.DefaultView.RowFilter = "father = " + provinceId;string cityId = dtCity.DefaultView.ToTable().Rows[this.cmbBoxCity.SelectedIndex]["cityID"].ToString();dtArea.DefaultView.RowFilter = "father = " + cityId;cmbBoxArea.DataSource = dtArea.DefaultView;cmbBoxArea.DisplayMember = "area";cmbBoxArea.ValueMember = "areaID";}本文来自CSDN博客,转载请标明出处:/johnsuna/archive/2007/07/16/1693890.aspx11 / 11。

Winform中多个ComboBox联动问题

Winform中多个ComboBox联动问题

Winform中多个ComboBox联动问题本⼈在窗体中添加了⼀个FlowLayoutPanel控件flpControlContain,为了能让控件⾃动排位(省了⾃⼰控制位置)代码如下://在窗体中添加⼀个按钮,每当该按钮点击⼀次,添加⼀个下拉框private void btnAddNew_Click(object sender, EventArgs e){this.ConditonCount++;//是⼀个私有字段,⽤于记录当前添加的是第⼏个,每添加⼀个⾃增1//添加列名下拉列表ComboBox cmb = new ComboBox(); = "列"+ConditonCount;//设置控件名称,⽤于在夫容器查询到该控cmb.Width = SELECTWIDTH;//设置宽度,该值是⼀个常量cmb.DataSource = this._columnslist;//绑定了⼀个字符串集合作为数据源cmb.Tag = ConditonCount;//设置标识,为第⼏个cmb.DropDownStyle = ComboBoxStyle.DropDownList;//设置下拉框下拉⽅式为只能选不能输⼊cmb.SelectedIndexChanged += Cmb_SelectedIndexChanged;//绑定列名下拉框选项修改事件,⽬前只在该事件中输出控件的Tagthis.flpControlContain.Controls.Add(cmb);//添加到FlowLayoutPanel}当多个ComboBox添加到FlowLayoutPanel后,我这⾥绑定的下拉框数据源都是⼀样的,就会出现当⼀个下拉框选中某⼀项之后,所有的下拉框都会去选中同⼀选项!但是下拉框选中项改变事件只触发⼀次于是弱弱的去贴吧问⼤神了~~得到的回答是:-------------------------------------------------------------cmb.DataSource = this._columnslist;尝试修改为cmb.DataSource = this._columnslist.ToList() ;----------------------------------------------------------最后试了下,成功了!问题就来了,是不是和绑定的是同⼀个数据源就关系,于是⾃⼰新建了⼀个窗体,⼿动添加两个ComboBox,但是给他们绑定的都是同⼀个List集合实验发现还是会联动(选中ComboBox1中的⼀项,ComboBox2中也会选中同⼀项)但是问题⼜来了:为什么绑定同⼀个数据源,会影响到控件的⾏为?可惜:贴吧⼤神没有告诉我于是结论:多个控件绑定同⼀个数据源会影响到控件的⾏为(⾄少ComboBox会),于是建议数据源是List时使⽤List.ToList()⽅法,返回⼀个新的List,如果是DataTable就使⽤DataTable.copy()复制⼀个给它,以避免因为绑定的是同⼀个数据,⽽使某⼀个控件的⾏为会影响到绑定了同数据源的其他控件学习了!膜拜⼤神。

VC++之ComboBox的用法总结

VC++之ComboBox的用法总结

VC++之ComboBox的用法总结分类:MFC2012-05-16 23:17 12202人阅读评论(0) 收藏举报vc++dropdownlist1. 对话框中添加 combox 控件2. 添加变量定义 CComboBox m_droplist;3. 添加内容:m_dropbox.SetCurSel(1);m_dropbox.AddString("所有数据类型");m_dropbox.AddString("空气温度");m_dropbox.AddString("空气湿度");m_dropbox.AddString("土壤湿度");m_dropbox.AddString("土壤湿度");m_dropbox.AddString("数据2");m_dropbox.AddString("数据3");CComboBox控件详解CComboBox控件又称作组合框控件,其有三种形态可供选择,1.简单组合框(Simple)2.下拉组合框(Drop-down)3.下拉列表式组合框(Drop-down list).CComboBox控件的常用设置属性说明:type属性:里面一共有三个选项.就是其三种形式, 我们常用的是后两种形态,其区别就是Dropdown的编辑区为可编辑控件,而droplist为静态控件.Data属性:当程序初始化的时候,下拉列表将显示其属性里面的内容,内容用分号分隔.其属性只支持后2中形式,Sort 属性:对添加到下拉列表框中的数据自动进行排序,如果你不想他改变你的显示序列,把他设置成False.控件是一个窗口.其基类是为CWnd.所以CComboBox也可以使用CWnd的一些函数,它自己的函数有30几种.我写了一个示范程序,演示了一些常用的函数,你可以参考其代码看到其功能.注:m_cbox 为CComboBox控件的关联变量,m_end为EDIT控件的关联变量1.GetCount() 函数:用以获得列表框中的选项数目. int GetCount() const;(此乃函数原型,我会列在每条的后面) 下面的例子是程序中各个按钮里面的代码int i;CString str;i=m_cbox.GetCount();str.Format ("%d",i);m_end="一共有"+str+"个数据";UpdateData(FALSE);2.GetCurSel() 函数:用以得到用户选中下拉列表框中数据的索引值.返回的值是重0开始的,如果没有选择任何选项将会返回-1 Int GetCurSel() constint i;CString str;i=m_cbox.GetCurSel ();str.Format ("%d",i+1);if (i==-1) m_end="你什么都没有选";else m_end="你选的是第"+str+"项";UpdateData(FALSE);3.SetCurSel函数:选取列表框中的一个选项,索引从0开始,-1为什么都不选.当你需要把列表框中已经选取的内容清空时就可以使用这个函数;if(m_i<3) m_cbox.SetCurSel (m_i++);//m_i为int型变量用以计数else {m_cbox.SetCurSel (-1);m_i=0;}4.SetEditSel函数:设置编辑区中蓝色选中字段的长度, BOOLSetEditSel( intnStartChar,int nEndChar ); nStartChar是起始的位置,当设置为-1时为不选择任何字段,nEndChar是结束位置.还有一个对应的函数GetEditSel是取得其位置,在此不详解.m_cbox.SetEditSel (3,5);//在编辑框中打入一串数字在按此按钮就能看到效果//其作用就是选中第3到第5个字符作为热点5.Clear() Cut() Paste() Copy() 这四个函数我放在一起说,因为他们都是针对编辑框中选定的文字进行编辑的函数,很多初学者很不明白这4个函数,使用这些函数没有作用,其实不然,这些函数对于在编辑框中的内容不进行处理,他真正处理的是你用鼠标选中的内容,对于Clear()函数很多书中解释都是有误的,很多书中对他的解释是清除当前选中的文本,我认为这样的解释是有歧异的,真正的解释是把你刚选中的文本释放掉,也就是不选,而不是把选中的删除,真正的删除选中的文本的函数是Cut(),Copy()是复制选中的文本,Paste()是粘贴到光标处.其演示就不写在程序中,有兴趣的朋友可以自己试试.6.LimitText()函数.其作用是限制在编辑框中键入的文本长度,BOOL LimitText(int nMaxChars); 当nMaxChars为0时,不是不能输入,而是长度最大化为65535字节7.GetLBText()函数.其原型为void GetLBText( int nIndex,CString&rString ).nIndex为列表框中数据的索引值,rString 为字符串,其作用就是把索引号为nIndex的数据放到rString变量中.与其对应的GetLBTextLen(intnIndex)函数就是得到索引号为nIndex中数据的长度m_cbox.GetLBText (2,m_end); // GetLBText按钮UpdateData(0);CString str; //GetLBTextLen按钮int i=m_cbox.GetLBTextLen (2);str.Format ("%d",i);m_end=str;UpdateData(FALSE);8.AddString() DeleteString() InsertString() ResetContent() 四个函数放在一起,他们都是针对下拉列表框的处理函数, AddString(LPCTSTR lpszString) 是在列表框的尾巴添加一条数据,参数为字符串. DeleteString(UINT nIndex)为删除指定索引为nIndex的数据. InsertString(int nIndex, LPCTSTR lpszString)在索引nIndex处插入IpszString的内容. ResetContent()是清除列表框中所有的内容.9.SetDroppedWidth(UINT nWidth) 函数.用于设定下拉列表框的最小宽度,当下拉列表框中的数据很长不能完全显示时,我们可以使用这个函数把列表框的宽度设置的大些.同样GetDroppedWidth()是返回列表框的宽度.以下为总结了各大论坛中对CCombBox控件使用的问题.并给出了正解.1.关于CComboBox在对话框中没有下拉项目的问题答: 资源编辑器中对话框中CComboBox组件的垂直范围拉大了下,就看见字体了,看到那个向下的黑箭头了吗,点他下拉,嘿嘿就这么简单.2.请问怎样能让CCombobox记住用户的输入.下次使用时还有答: 要记住用户的输入必须用到文件读写,或者把内容添加到注册表中,我会在以后给出解决办法.3. CCOMBOBOX如何使它只读,不能编辑答: 看了本文的介绍也许你现在知道了, CCOMBOBOX有三种类型的,选择你需要的吧!4. 我要让界面一显示,就能在Combo框中显示默认的数据答: 你要在OnInitDialog里面加上我上面所提到的SetCurSel()函数就行了.5. 如何把选好的内容赋给变量答: 先给CCOMBOBOX设置一个CString关联变量,再添加事件处理函数CBN_ Selchange.使用UpdateData(FALSE)就行了.6. 在CComboBox组合框中,条目的对齐方式是左对齐,能设置为对中或者右对齐吗?答: 没有直接的方法,你必须自己对齐, 比如最大长度是10int i;String.Format("%10d", i);CComboBox->AddStringVC combobox 使用大全---------------------------------------------------一、如何添加/删除Combo Box内容1. 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。

MFC中Combo Box的用法总结

MFC中Combo Box的用法总结

MFC中Combo Box 的用法总结Combo Box(组合框)控件很简单,可以节省空间。

从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。

用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。

1.改变下拉框大小1)直接在控件上操作,先点向下的箭头,就可以调整下拉框大小;2)为了让列表框变的更宽,可以用setdroppedwidth(int width)函数来调整列表框的宽度。

2.定义控件对应变量假定已经创建了一个Dialog,并且从控件工具箱将Combo Box 控件拖放到上面。

打开Class Wizard,添加控件对应变量,如:CComboBox m_combo。

3.向控件添加Items1)在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。

换行用ctrl+回车。

若在VS2005中,Items间用";"隔开即可;2)利用函数AddString()向Combo Box 控件添加Items,如:m_combo.AddString(“StringData1”);m_c ombo.AddString(“StringData2”);m_combo.AddString(“StringData3”);3) 也可以调用函数InsertString() 将Item 插入指定位置nIndex,如:m_combo.InsertString(nIndex, “StringData” );4)int GetCount( )可以得到当前列表框中行的数量。

示例代码:程序初始化时动态添加ItemsCString strTemp;m_combo.ResetContent();//消除现有所有内容for(inti=1;i<=100;i++){strTemp.Format("%d",i);m_combo.AddString(strTemp);}4.从控件得到选定的Item假设在控件列表中已经选定某项,现在要得到被选定项的内容,首先要得到该项的位置,然后得到对应位置的内容。

easyUIcombobox使用方法总结

easyUIcombobox使用方法总结

easyUIcombobox使⽤⽅法总结combobox,中⽂叫复合框,是把⽂本框和列表框的特性结合起来的⼀种控件,这个控件,既可以输⼊⽂字,也可以像列表框⼀样选择选项Combobox⽤法和⽅法参数:1、需要引⼊class=" easyui-combobox”2、参数设置需要在data-options中设置3、属性参数配置:valueField:基础数据值名称绑定到Combobox(提交值)textField:基础数据的字段名称绑定的Combobox(显⽰值)mode:定义当⽂本改变时如何加载列表数据,当设置为remote模式下,什么类型的⽤户将被发送http请求参数名为'q'的服务器,以获取新的数据。

url:从远程URL来加载列表数据method:http⽅法检索列表数据data:列表中被加载的数据filter:定义如何过滤本地数据“模式”设置为'local'formatter:定义如何呈现⾏loader:定义如何从远程服务器加载数据4、事件:onBeforeLoad(param): 操作之前将数据加载,返回false就取消这个荷载作⽤onLoadSuccess():触发时,远程数据加载成功onLoadError:触发时,远程数据加载错误ONSELECT:触发,当⽤户选择⼀个列表项onUnselect:触发,当⽤户取消选择⼀个列表5、⽅法:options():返回选择对象getData():返回加载的数据loadData(data):加载列表数据reload(url):重新加载远程数据列表setValues(values):设置combobox的值数组setValue(value):设置combobox的值clear():清空combobox的值select(value):选中指定的值unselect(value):取消指定的值使⽤easyui之后,对于Combobox来说,获值有两种选择,"getValue‘和“getText”的选择源于我们对combobox在data-option中的设定,“valueField:”和“textField:”对应了getValue和getText,这样⼦对于键值对的选取就避免了多次的I/O操作(编码和性能都提升),很⽅便。

动态绑定数据的ComboBox控件联动的问题及其解决方法

动态绑定数据的ComboBox控件联动的问题及其解决方法

1动态 绑定数 据 的 Co o o mb B x控件 联动 问题 的研究现 状
在 期 刊 、 志和 网 络上 . o b B x控 件联 动 问 杂 Cm o o
题 的研 究 文章 一直 很 少 . 有 的儿 篇博 文 也 不是 针 仅
对 动 态 绑 定 数 据 库 的数 据 后 的 C m o o 件 联 动 o b B x控
2l 0 1年 1 2月 筇 1 0卷 第 4期
三 门峡 职业 技 术 学院 学 报
J u n lo a me x a P l tc n c o r a f S n n i oy e h i
De .011 (. 2
Vo11 No4 .0. .
技 术 与 应 用
动态绑定数据的 C m o o 控件联动的问题及其解决方法 o bB x
2 1开 发 环 境 .
为 了读 者容易 理解 文章 . 者 以两 个 C mb B 笔 o 。。 控 件进 行 年级 和 班级 的联 动 为例 阐述 了解 决方 案
丌 发 环 境 为 Mi oo sa Su i 2 0 . 据 库 软 c sfVi 1 td0 0 8 数 r i u
图 5 三 层 结 构
图 4 c a 数 据表 与 G ae数据 表 关 系 1s s rd
24问题 分 析 .
同时也 添加 了项 目间 的引 用关 系 。 示层项 目 表
A 0to 0 o b uC mb B x依 赖 业 务 逻 辑 层 C m o o B L和 o bB x L
Cm oo o b B X命名 空 间 。
图 3 班级 数据 表 结构
G d 簧 t日呢誊
G r I D
7 i i

easyui-combobox多选时的小问题

easyui-combobox多选时的小问题

easyui-combobox多选时的⼩问题
easyui-combobox可⽀持多选,仅需将multiple值设为true即可
$('#combobox').combobox({
url:url,
multiple:true,
separator:',',
valueField:'value',
textField:'text'
});
保存值时,会根据separator值进⾏分隔,默认以,分隔
在对combobox赋值时,使⽤了form的load进⾏赋值
$("#form").form('load', data)
这时就出了⼀点⼩问题,在数据库存⼊了19,20的值后,再load出来会发现变成了1,9,,,2,0
整了半天没发现有什么问题,百度也⽆果
最后从combobox多选时赋值所⽤的⽅法中发现了问题:
combobox的multiple值为true时,赋值⽅法为setValues
$('#combobox').combobox('setValues',data.split(","));
data.split(",”)获得的是⼀个数组,⽽从数据库中取出的值为String,结果显⽽易见,combobox把String拆分成⼀个个char的数组了,字符串”19,20“就是由 1 9 , 2 0 组成的。

同理,在获取值时使⽤的⽅法是getValues,得到的是⼀个数组
所以解决⽅法就简单了,只需将19,20split成⼀个数组再load就没问题了。

C#WinForm_ComboBox数据绑定的问题

C#WinForm_ComboBox数据绑定的问题

C#WinForm_ComboBox数据绑定的问题Visual Studio C#中的数据绑定五.复杂型组件的数据绑定:在上面的介绍中,了解到对复杂型组件的数据绑定是通过设定组件的某些属性来完成数据绑定的。

首先来介绍一下ComboBox组件的数据绑定.(1).ComboBox组件的数据绑定:在得到数据集后,只有设定好ComboBox组件的的三个属性就可以完成数据绑定了,这三个属性是:、"DisplayMember"、"ValueMember"。

其中"DataSource"是要显示的数据集,"DisplayMember"是ComboBox 组件显示的字段,"ValueMember"是实际使用值。

具体如下:ComboBox1.DataSource = myDataSet ;ComboBox1.DisplayMember = "person.xm" ;ComboBox1.ValueMember = "person.xm" ;注释:此时绑定是Access 2000数据库中"person"表的"xm"字段。

由此可以得到ComboBox组件数据绑定的源程序代码(Combo01.cs),本代码操作数据库是Access 2000:public class Form1 : Form{private ComboBox ComboBox1 ;private Button button1 ;private System.Data.DataSet myDataSet ;private/doc/5612742ced630b1c59eeb5fe.html ponentModel.Container components = null ;public Form1 ( ){file://打开数据链接,得到数据集GetConnect ( ) ;InitializeComponent ( ) ;}file://清除程序中使用过的资源protected override void Dispose ( bool disposing ){if ( disposing ){if ( components != null ){components.Dispose ( ) ;}}base.Dispose ( disposing ) ;}private void GetConnect ( ){file://创建一个OleDbConnectionstring strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = db.mdb" ;OleDbConnection myConn = new OleDbConnection ( strCon ) ;string strCom = " SELECT * FROM person " ;file://创建一个DataSetmyDataSet = new DataSet ( ) ;myConn.Open ( ) ;file://用OleDbDataAdapter 得到一个数据集OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;file://把Dataset绑定person数据表myCommand.Fill ( myDataSet , "person" ) ;file://关闭此OleDbConnectionmyConn.Close ( ) ;}private void button1_Click ( object sender , System.EventArgs e ){ComboBox1.DataSource = myDataSet ;ComboBox1.DisplayMember = "person.xm" ;ComboBox1.ValueMember = "person.xm" ;}static void Main ( ){Application.Run ( new Form1 ( ) ) ;}}图03:对ComboBox组件数据绑定的程序界面得到了ComboBox组件对本地数据库的数据绑定程序,也就十分方便的得到ComboBox组件绑定Sql Server 2000源程序代码(Combox02.cs)具体如下:public class Form1 : Form{private ComboBox ComboBox1 ;private Button button1 ;private System.Data.DataSet myDataSet ;private/doc/5612742ced630b1c59eeb5fe.html ponentModel.Container components = null ;public Form1 ( ){file://打开数据链接,得到数据集GetConnect ( ) ;InitializeComponent ( ) ;}file://清除程序中使用过的资源protected override void Dispose ( bool disposing ){if ( disposing ){if ( components != null ){components.Dispose ( ) ;}}base.Dispose ( disposing ) ;}private void GetConnect ( ){// 设定数据连接字符串,此字符串的意思是打开Sql server数据库,服务器名称为server1,数据库为data1 string strCon = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 " ;OleDbConnection myConn = new OleDbConnection ( strCon ) ;myConn.Open ( ) ;string strCom = " SELECT * FROM person " ;file://创建一个DataSetmyDataSet = new DataSet ( ) ;file://用OleDbDataAdapter 得到一个数据集OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;file://把Dataset绑定person数据表myCommand.Fill ( myDataSet , " person " ) ;file://关闭此OleDbConnectionmyConn.Close ( ) ;}private void button1_Click ( object sender , System.EventArgs e ){ComboBox1.DataSource = myDataSet ;ComboBox1.DisplayMember = "person.xm" ;ComboBox1.ValueMember = "person.xm" ;}static void Main ( ){Application.Run ( new Form1 ( ) ) ;}}C# WinForm 中ComboBox数据绑定的问题2009-12-29 09:24怎样让WinForm中的ComboBox显示表中的一个字段,同时又绑定另一个字段?在Web中的ComboBox这样写可以绑定两个值:/doc/5612742ced630b1c59eeb5fe.ht ml boBox1.DataTextField="B000602";//显示中文,方便用户选择/doc/5612742ced630b1c59eeb5fe.ht ml boBox1.DataValueField="B000601";//绑定与选择对应的另一个值/doc/5612742ced630b1c59eeb5fe.html boBox1.DataBind();但是在WinForm程序中该怎么写啊?0******************************************************************DataSet ds = new DataSet();//这个DataSet是你从数据库里取出来的值string[] arr = new string[ds.Tables[0].Rows.Count];for (int i = 0; i < arr.Length; i++){arr[i] = ds.Tables[0].Rows[i][2].ToString();}textBox1.AutoCompleteCustomSource.AddRange(arr);textBox1.AutoCompleteSource =AutoCompleteSource.CustomSource;textBox1.AutoCompleteMode =AutoCompleteMode.SuggestAppend;1.************************************************************* ****** 假设combobox绑定的列表为DataSet2的ListTable表(含有ListID, ListName字段),需要绑定的记录字段为DataSet1的T able1表的ListID字段combobox.DataSource = dataset2.Tables["ListTable"]; combobox.DisplayMember = "ListName";combobox.ValueMember = "ListID";combobox.DataBindings.Add("SelectedValue", dataset1, "Table1.List ID");2.************************************************************* **** //dt为数据表,ID,Name为dt的两个字段:comboBox1.DataSource = dt ;comboBox1.ValueMember ="ID";comboBox1.DisplayMember ="Name";3.************************************************************* *****SqlConnection con = new SqlConnection("server=192.168.2.198;uid=sa;pwd=sa;database=northwin d"); SqlCommand cmd = con.CreateCommand();/doc/5612742ced630b1c59eeb5fe.ht ml mandT ext = "Select * from Customers where countr y='USA'";SqlDataAdapter adp = new SqlDataAdapter();adp.SelectCommand = cmd;DataSet ds = new DataSet();adp.Fill(ds, "Customers");comboBox1.DataSource = ds.Tables["Customers"];comboBox1.DisplayMember = "CompanyName";comboBox1.ValueMember = "CompanyName";++++++++++++++++或者++++++++++++++++++++++SqlConnection con = new SqlConnection("server=192.168.2.198;uid=sa;pwd=sa;database=northwin d"); SqlCommand cmd = con.CreateCommand();/doc/5612742ced630b1c59eeb5fe.ht ml mandT ext = "Select * from Customers where countr y='USA'";SqlDataAdapter adp = new SqlDataAdapter();adp.SelectCommand = cmd;DataSet ds = new DataSet();adp.Fill(ds, "Customers");comboBox1.DataSource = ds;comboBox1.DisplayMember = "/doc/5612742ced630b1c59eeb5fe.html panyName";comboBox1.ValueMember = "/doc/5612742ced630b1c59eeb5fe.html panyName";++++++++++++往DataGrid里添加下拉列表++++++++++++ DataGridTableStyle dgt = new DataGridTableStyle();dgt.MappingName = "test";DataGridTextBoxColumn dgtbc = new DataGridTextBoxColumn(); dgtbc.MappingName = "name";dgtbc.HeaderText= "name";ComboBox cmbFunctionArea = new ComboBox(); cmbFunctionArea.DataSource = DtGeneral;cmbFunctionArea.DisplayMember = "name"; cmbFunctionArea.ValueMember = "value";cmbFunctionArea.Cursor = Cursors.Arrow;cmbFunctionArea.DropDownStyle=ComboBoxStyle.DropDownList;cmbFunctionArea.Dock = DockStyle.Fill;dgtbc.TextBox.Controls.Add(cmbFunctionArea);dgt.GridColumnStyles.Add(dgtbc);cmbFunctionArea.SelectionChangeCommitted +=new EventHandler(cmbFunctionArea_SelectionChangeCommitted);+++++++++++++修改++++++++++++++++private void cmbFunctionArea_SelectionChangeCommitted(object se nder, EventArgs e){((DataTable)dataGrid1.DataSource).Rows[dataGrid1.Current RowIndex][0] = ((ComboBox)sender).T ext.ToString();dataGrid1.SetDataBinding(DtGeneral,null);}4.******************************************************************* *****DataBindings是一般控件所具有的,是绑定数据源的某一个字段combobox.DataBindings.Add("要绑定控件的属性如下拉框的SelectedValue\Text", 数据源如dataset1, "导航路径如Table1.ListID");但是,DataBindings只能绑定一个字段,而绑定多个字段时典型的如列表控件Combobox、ListBox控件,需要键值对,这时就需要指定DataSource(实现IList接口就行),然后指定ValueMember、DisplayMember 。

解决 MFC工程下 ComboBox 不管怎么添加内容也是空的

解决 MFC工程下 ComboBox 不管怎么添加内容也是空的

CComboBox 关联的 (控件类型COMBOBOX)变量类型 CComboBox 是互相对应m_JMQ_d_CComboBox
1:先确认 CComboBox 关联的 (控件类型COMBOBOX)变量类 型CComboBox 是互相对应m_JMQ_d_CComboBox 例如:// IDC_COMBO1 DIALOGb A板厚度(控件类型 COMBOBOX)变量类型CComboBox m_JMQ_d_CComboBox
学习记录
学习记录
默认的, 下拉前
自己调整, 下拉后;
点这个下拉箭头时,要把这个下拉框的显示幅度,小黑点往下拉,使劲下拖。 可恶的默认效果很少,你面里面添加的根本就显不出来。我也整柴了ox 不管怎么添加内容也是空的 //说明: IDC_COMBO1 DIALOGb A板厚度(控件类型COMBOBOX)变量类型CComboBox m_JMQ_d_CComboBox m_JMQ_d_CComboBox.ResetContent(); //这里先清空了--》m_JMQ_d_CComboBox的内的列表内容 m_JMQ_d_CComboBox.AddString(_T("20")); m_JMQ_d_CComboBox.AddString(_T("25")); 如果是在初始化:OnInitDialog() m_JMQ_d_CComboBox.AddString(_T("30")); 下面这行清空代码可以不用加入; m_JMQ_d_CComboBox.AddString(_T("35")); m_JMQ_d_CComboBox.AddString(_T("40")); m_JMQ_d_CComboBox.AddString(_T("50")); m_JMQ_d_CComboBox.AddString(_T("60")); m_JMQ_d_CComboBox.AddString(_T("70")); m_JMQ_d_CComboBox.AddString(_T("80")); m_JMQ_d_CComboBox.AddString(_T("90")); m_JMQ_d_CComboBox.AddString(_T("100")); m_JMQ_d_CComboBox.AddString(_T("110")); m_JMQ_d_CComboBox.AddString(_T("120")); m_JMQ_d_CComboBox.AddString(_T("130")); m_JMQ_d_CComboBox.AddString(_T("140")); m_JMQ_d_CComboBox.AddString(_T("150")); m_JMQ_d_CComboBox.AddString(_T("160")); m_JMQ_d_CComboBox.AddString(_T("170")); m_JMQ_d_CComboBox.AddString(_T("180")); m_JMQ_d_CComboBox.AddString(_T("190")); m_JMQ_d_CComboBox.AddString(_T("200")); m_JMQ_d_CComboBox.AddString(_T("210")); m_JMQ_d_CComboBox.AddString(_T("220")); m_JMQ_d_CComboBox.AddString(_T("230")); m_JMQ_d_CComboBox.AddString(_T("240")); m_JMQ_d_CComboBox.AddString(_T("250")); m_JMQ_d_CComboBox.AddString(_T("260")); m_JMQ_d_CComboBox.AddString(_T("270")); m_JMQ_d_CComboBox.AddString(_T("280")); m_JMQ_d_CComboBox.AddString(_T("290")); m_JMQ_d_CComboBox.AddString(_T("300")); SetDlgItemText(IDC_COMBO1, _T("60")); //默认选中这一行;

ComboBox的使用方法

ComboBox的使用方法

Combo Box (组合框)控件很简单,可以节省空间。

从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。

用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。

下面的例子简要说明如何利用 MFC CComboBox Class来操作字符串列表。

1、定义控件对应变量假定已经创建了一个Dialog,并且从控件工具箱将 Combo Box 控件拖放到上面。

打开 Class Wizard,添加控件对应变量,如:CComboBox m_cbExamble;在后面的代码中会不断使用这个变量。

2、向控件添加 Items1) 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。

换行用ctrl+回车。

2)利用函数 AddString()向Combo Box 控件添加 Items,如:m_cbExample.AddString(“StringData1”);m_cbExample.AddString(“StringData2”);m_cbExample.AddString(“StringData3”);3)也可以调用函数 InsertString()将 Item插入指定位置 nIndex,如:m_cbExample.InsertString( nIndex, “StringData” );3、从控件得到选定的Item假设在控件列表中已经选定某项,现在要得到被选定项的内容,首先要得到该项的位置,然后得到对应位置的内容。

这里会用到两个函数,如:int nIndex = m_cbExample.GetCurSel();CString strCBText;m_cbExample.GetLBText( nIndex, strCBText);这样,得到的内容就保存在 strCBText中。

若要选取当前内容,可调用函数GetWindowText(strCBText)。

VB组合框(ComboBox)控件常用属性和事件

VB组合框(ComboBox)控件常用属性和事件

VB组合框(ComboBox)控件常用属性和事件组合框(ComboBox)控件,是列表框和文本框组成的控件,具有列表框和文本框的功能。

并具有文本框和列表框的大部分属性。

它可以像列表框组合框(ComboBox)控件,是列表框和文本框组成的控件,具有列表框和文本框的功能。

并具有文本框和列表框的大部分属性。

它可以像列表框一样,让用户通过鼠标选择需要的项目,也可以像文本框那样,用键入的方法选择项目。

组合框的基本属性:Name、Height、width、T op、L,eft、Enabled、Visible和Index等。

组合框与列表框具有相同的属性:List、ListIndex、ListCount、Selected、Sorted、 Text、MultiSelect,Style等。

组合框的特有属性:组合框有3种不同的样式,其下拉式组合框、简单组合框可输入内容,但必须通过AddItem方法加入。

组合框的风格是由Style属性值决定的。

设置组合框的Style属性可以选用组合框的3种样Style属性为0时,是下拉式组合框,默认状态;Style属性为1时,是简单组合框;Style属性为2时,是下拉列表框。

(1)下拉组合框下拉组合框,显示在屏幕上的仅是文本编辑器和一个下拉箭头。

执行时,用户可像在文本框中一样直接输入文本,也可单击组合框右侧的下拉箭头,打开列表项供用户选择。

选定某个选项后,此选项将被显示在组合框顶端的文本框中。

这种组合框允许用户输入不属于列表内的选项。

当用户再用鼠标单击下拉箭头时,下拉出来的列表项就会消失,仅显示文本框,这种风格能节省窗体上的空间,因为列表部分在用户选择一个项时将关闭。

(2)简单组合框简单组合框,列出所有的项目供用户选择,右边没有下拉箭头,列表框不能收起和下拉。

与文本编辑器一起显示在、屏幕上。

用户可在文本框中直接输入列表项中没有的选项,也可从列表中选择。

(3)下拉式列表框下拉式列表框与下拉组合框相似,区别是用户不能输入列表框中没有的项,只能在列表中选择。

ComboBox使用小结

ComboBox使用小结

ComboBox使⽤⼩结第⼀次尝试写博客,希望博友多多交流关于想写博客的由来:在园⼦⾥看到别⼈⼀篇关于有没有必要写博客的见地,我看了以后觉得很好,从⽽激发了我写博客的兴趣,⽂笔和技术都不怎么样,希望以后越来越好吧(那篇⽂章已经找不了,所以不能放个链接了,我觉得有必要看看那篇⽂章,以后找到的话再补),⾃⼰写博客也是想记录⼀下⾃⼰的成长,还有就是充当备忘录的功能吧ComboBox(下拉框):为什么想到写这个,因为之前⼯作以后就没做过Winform的东西了,现在新的公司主要做CS,只能重拾以前的东西了,很多东西已经忘记了,所以也是在重新学习和记录,以后忘记的时候过来看⼀下ComboBox的功能其实很简单,就是下拉框的功能,接下来分⼏点介绍⼀下:1.属性:数据 Items:和数据库⽆关联,本地数据绑定。

点击后可在集合内编辑⾃⼰下拉框的内容,成功以后就是下⾯的图⽚所⽰,但是下拉框的内容是可编辑的2.属性:外观DropDownStyle 要想下拉框内容不被编辑,就要更改外观DropDownStyle为DropDownList3.如果下拉框想要获取数据库的内容,需要在Load事件中写关联数据库的语句,此时就不需要编辑Item属性了,此时的DisPalyMember和ValueMember可以是中⽂也可以是数据库字段。

这取决于DAL中的查询语句是否⽤字段 as ...4.SelectIndexChanged事件,双击后即可在⾥⾯写下拉框改变时触发的事件,最常见的是联动下拉框的形式,⽐如在⽹页查看某地的天⽓预报时选择省市区的操作,在此⽤学院专业和班级的例⼦,在Load事件中加载完学院的信息后,此时的操作应该是选择学院,⼆级下拉框即刻改变为当前学院的专业,此时在Cbo_College的SelectIndexChanged写加载专业的事件,同理,班级的加载卸载Cbo_Speciality的SelectIndexChanged事件中有点流⽔账的嫌疑了,想到哪⾥写到哪⾥了,有不对的地⽅,多多指正。

vb.netComboBox 控件的使用

vb.netComboBox 控件的使用

入门——ComboBox 控件的使用前面我们了解了ListBox(列表框)控件的使用(参看:入门——ListBox控件的使用),在中还有一个与ListBox控件十分相似的控件——ComboBox 控件,也叫组合框。

组合框控件包括两个部分,一部分是上部可以输入列表项的文本框;另一部分是位于文本框下方的列表框,用于显示用户可以从中选择的项的列表,如图一所示组合框控件在工具箱中如下图二所示:ComboBox 控件和ListBox 控件在功能上很相似,很多情况下,这两个控件是可以互换使用的,但是还是有某种特定的环境下只适合使用一种控件的情况。

通常,ComboBox控件适合于建议用户选择控件所列举的选项、同时又可以让用户自行在文本框中输入列表中不存在的选项的情况;而ListBox 控件适合于限制用户只能选择列表中的选项的情况。

在用户界面上,因为ComboBox 控件默认情况下是存在下拉列表框的,所以比ListBox 控件占用的窗体空间少,更加适合于使用在存在大量列表项的情况下。

如下图三所示的是QQ修改个人设置的界面,它大量地合理使用ComboBox 控件,使得用户界面简洁且能容纳下更多的选项信息。

由此可见,ComboBox 控件的比ListBox 控件更加能灵活多用。

一、ComboBox 控件的常用属性:1、BackColor 属性:获取或设置ComboBox 控件的背景色。

2、DropDownStyle 属性:获取或设置指定组合框样式的值,确定用户能否在文本部分中输入新值以及列表部分是否总显示。

它包含三个值,默认值为 DropDown,如下表所示:3、DropDownWidth 属性:用于获取或设置组合框下拉部分的宽度(以像素为单位),有些列表项太长,则需要通过改变该属性来显示该类表项的全部文字,如果未设置 DropDownWidth 的值,该属性返回组合框的Width。

需要注意的是,下拉部分的宽度不能小于 ComboBox 的宽度,所以我们设置 DropDownWidth 的值如果小于ComboBox 的宽度时下拉列表框的宽度还是与文本框的宽度一样。

也谈解决Combobox绑定数据后取值出现System.Data.DataRowView的问题

也谈解决Combobox绑定数据后取值出现System.Data.DataRowView的问题
同一个窗口同一张表通过第一个combobox值的改变动态绑定第二个combobox结果出现一个怪现象第一个combobox有的值改变第二个combobox一切正常有几个值就会引起第二个systemdatadatarowview的问题添加了datasourcenothing改变了displaymembervaluemember顺序都无济于事
也谈解决 Combobox绑定数据后取值出现 System.Data.DataRowView的 问 题
刚才遇到一个怪现象:同一个窗口,同一张表,通过第一个Combobox值的改变,动态绑定第二个Combobox,结果出现一个怪现象,第一 个Combobox有的值改变第二个Combobox一切正常,有几个值就会引起第二个System.Data.DataRowView的问题,添加了DataSource = Nothing、改变了DisplayMember、ValueMember顺序都无济于事。郁闷了2个小时。
最后解决方法:定义一个临时DataTable,先给临时DataTable赋值,然后将临时DataTable绑定到DataSource,一切正常了。
百思不得其解。ห้องสมุดไป่ตู้
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ComboBox 要注意的几个小问题 -- 值跑位,值显示,获取输入值2010年08月11日星期三 12:59在Extjs中,使用到ComboBox总会出现一些小问题,找半天都找不出来原因,下面就是几个要注意的。

1。

ComboBox加载数据之后,ComboBox里面的值跑位,不能正确对应到ComboBox 里面。

原因:因为要传name的值到服务器端,使用到了隐藏属性hiddeName来传值,hiddenName的名是要和name一样的。

如果id和name设置为相同的,就会不能正确对应。

所以,comboBox的id和name 不能设置一样new boBox({id:"comboId",name:"comboName",hiddenName:"comboName"});//注意:加了HiddenName这个属性,得到的ComboBox是它的id,反则是显示值。

2。

第二个问题是明明已经加载了数据之后store里面也有值,确没有再ComboBox里面显示,这个你就要注意你的ComboBox里面有没有设置valueField 和 displayField, valueField绑定到当前底层数据,相当于它的id,displayValue,绑定到当前底层数据对应的名词,顾名思义也就是显示出来的值。

还要注意一下,它的映射是否也有写,field 里面是否写正确了。

如果这两个属性没有,那就是值怎么也显示不出来的。

还有一点是,得到的值从服务器端传回来,一定要记得有response.getWrite().print(json格式值); 有时前台都写正确了,但是还是没值,那就是没有将值传到前台store : new Ext.Data.Store({proxy: new Ext.Data.httpProxy({}),reader:new Ext.data.JsonReader({});field:["valueid","displayName"]});new boBox({id:"comboId",name:"comboName",hiddenName:"comboName",store:storevalueField:"valueid" , //要跟field里面对应,不然不能正确匹配displayField:"dispalyField"});3. 获取ComboBox手动输入的值。

手动输入的值是没有完全设置到ComboBox中value里面的,所以当我们去获取的时候,得到都是一个空字符串。

listeners : {render : function(f) {f.el.on('keyup', function(e) {f.setValue(f.getRawValue());vipStore.proxy = new Ext.data.HttpProxy({url : "vip_realtimeVipName.action?vipID="+ f.getRawValue()});vipStore.load();});}这几个问题总会一不小心就会碰到,要多加注意了。

Extjs ComboBox keyup事件取不到输入值的问题2010-12-22 16:24:26| 分类:Extjs | 标签:extjs combobox getvalue()取不到输入值|字号大中小订阅问题描述:在使用listeners监听键盘keyup事件时,使用getValue()方法,总是取不到人工填写的值。

当时我就是想根据用户输入的快捷键值,自动显示选项!以前做项目时用ComboBox的时候也碰见这个问题,一直没找到到原因,很是郁闷….< xmlnamespace prefix ="o" ns="urn:schemas-microsoft-com:office:office" />解决方案:使用getRawValue()来代替getValue()方法取值listeners:{'keyup': function(textfield, e) {var value = textfield.getRawValue(); //使用getValue()取不到用户输入的值if (value == 1) {textfield.setValue("有");}else if(value==0){textfield.setValue("无");}}}问题分析:首先我们来看一下API:getRawValue() : MixedReturns the raw data value which may or may not be a valid, defined value. To return a normalized value see getValue...Returns the raw data value which may or may not be a valid, defined value. To return a normalized value see getValue.Parameters:∙None.Returns:∙Mixedvalue The field valuegetValue() : StringReturns the currently selected field value or empty string if no value is set.Returns the currently selected field value or empty string if no value is set.Parameters:∙None.Returns:∙Stringvalue The selected value简单的说:getRawValue()方法返回的是未经过验证的值,包括用户输入的或选择的,getValue()返回的是Combobox存在的选项的值,如果没有则返回空值。

那么就上面的例子,如果用户输入快捷键1,getRawValue()==1,而ge tValue()==””,因为Combox不存在值为1的选项,默认返回为空,也就是出现为什么取不到值的原因。

主要是在store 里监听load事件,store完成的时候,数据已经引用进来了。

获取store第一条记录,设定为ComboBox 的默认值var poststore = Ext.create('Ext.data.Store', {model: 'State',listeners: {load: function() {var record = poststore.getAt(0).get('position_id');SelectPostion.setValue(record);}},proxy: new Ext.data.HttpProxy({ url: '/web/wage/ajaxcityconfig.aspx?type=Pos' }),reader: new Ext.data.JsonReader({}, [{ name: 'position_id' },{ name: 'position' }])});// ComboBox with multiple selection enabledvar SelectPostion = Ext.create('boBox', {fieldLabel: '选择职位',labelStyle: 'width:80px;color:black',Style: 'color:black',multiSelect: false,displayField: 'position',value: '',width: 320,labelWidth: 80,valueField: 'position_id',store: poststore,queryMode: 'remote'});poststore.load();//neTypeStore.load();var neTypeCombo = new boBox({store : neTypeStore,emptyText : "请选择",fieldLabel : "网元类型",isFormField : true,id : "ne_type",name : "ne_type",mode : "remote",triggerAction : "all",valueField : "id",displayField : "text",editable : false,// autoWidth: true,width : "300",renderTo : "ne_type_div",listeners: {"select":function(e,record,index){var netype=Ext.getCmp("ne_type").getRawValue();var ne_type=temp(netype);var borad_state=Ext.getCmp("borad_state").getValue();// alert(ne_type+borad_state);//alert(ne_type.getId());//ne_type.clearValue();ds.proxy = new Ext.data.HttpProxy({url : "combox.do?dispatch=element&sType="+borad_state+'&sEquipType='+ne_type+'&sEquipName='+''+'&srecordname=abcdefg&iNeedRange='+1,method : "POST"});// Ext.apply(ds.store.baseParam, {sType: borad_state,sEquipType: ne_type,sEquipName: "",iNeedRange: 1}); ds.load({params:{start:0,limit:101}});}}});这是下拉框的选择事件然后用e来获取下拉框的值,请问高手们function中的e是怎么回事各位朋友,帮我看看。

相关文档
最新文档