ComBox很简单的一个问题,急....在线等..

wangping_li 2008-06-02 10:23:39
我在我的ComBox里面有如下选项..现在要实现一个功能就是输入汉字首字母出来符合条件的汉字,比如:css就出来包含"测试商"文字的所有值.望各位大虾帮帮忙.小弟先谢了.
测试商品八
测试商品二
测试商品九
测试商品六
测试商品七
测试商品三
测试商品十
测试商品四
测试商品五
测试商品一
...全文
410 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sy1987611 2008-06-02
  • 打赏
  • 举报
回复
要么就动态生成一个ComBox,要么就把以前的ComBox里面的值删除,把匹配的this.CB_OrderName.Items[i].ToString()重新绑定。
wangping_li 2008-06-02
  • 打赏
  • 举报
回复
TO:sy1987611
你上面的方法可以找到符合我输入条件的字母,比如我输入css就可以找到全部,现在让找到的这些值在下拉例表的呈现出来啊,怎么绑定ComBox?
wangping_li 2008-06-02
  • 打赏
  • 举报
回复
addItems是绑定ComBox列表的,就是从这个Items里面去检索
wangping_li 2008-06-02
  • 打赏
  • 举报
回复
好像有点不对..输出结果什么也没有
以下是我的代码:

void addItems()
{
CB_OrderName.Items.Add("测试商品一");
CB_OrderName.Items.Add("测试商品二");
CB_OrderName.Items.Add("测试商品三");
CB_OrderName.Items.Add("测试商品四");
CB_OrderName.Items.Add("测试商品五");
CB_OrderName.Items.Add("测试商品六");
CB_OrderName.Items.Add("测试商品七");
CB_OrderName.Items.Add("测试商品八");
CB_OrderName.Items.Add("测试商品九");
CB_OrderName.Items.Add("测试商品十");
}

public string GetChineseSpell(string strText)
{
int len = strText.Length;
string myStr = "";
for (int i = 0; i < len; i++)
{
myStr += getSpell(strText.Substring(i, 1));
}
return myStr;
}

public string getSpell(string myChar)
{
byte[] arrCN = System.Text.Encoding.Default.GetBytes(myChar);
if (arrCN.Length > 1)
{
int area = (short)arrCN[0];
int pos = (short)arrCN[1];
int code = (area << 8) + pos;
int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 };
for (int i = 0; i < 26; i++)
{
int max = 55290;
if (i != 25) max = areacode[i + 1];
if (areacode[i] <= code && code < max)
{
return System.Text.Encoding.Default.GetString(new byte[] { (byte)(65 + i) });
}
}
return "*";
}
else return myChar;
}

private void button4_Click(object sender, EventArgs e)
{
string[] str = new string[CB_OrderName.Items.Count];
for (int i = 0; i < str.Length; i++)
{
str[i] += GetChineseSpell(this.CB_OrderName.Items[i].ToString()).ToLower() + ",";
if (str[i].Substring(0, CB_OrderName.Text.Length).IndexOf(CB_OrderName.Text) > -1)
{
MessageBox.Show(str[i]);
}
}

}

private void CB_OrderName_TextChanged(object sender, EventArgs e)
{

// 现在想在这里调用上面的方法,当我文本框的值发生改变时,自动检索出来符合条件的记录,

}

大虾们可不可以帮帮忙
sy1987611 2008-06-02
  • 打赏
  • 举报
回复
是的
wangping_li 2008-06-02
  • 打赏
  • 举报
回复
if (str[i].Substring(0, this.txtID1.Text.Length).IndexOf(this.txtID1.Text) > -1)

txtID1.text是自己输入的吗?
belldandy11 2008-06-02
  • 打赏
  • 举报
回复
mark
sy1987611 2008-06-02
  • 打赏
  • 举报
回复
c#:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.IO;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string[] str = new string[this.drop.Items.Count];
for (int i = 0; i < str.Length; i++)
{
str[i] += GetChineseSpell(this.drop.Items[i].Text).ToLower() + ",";
if (str[i].Substring(0, this.txtID1.Text.Length).IndexOf(this.txtID1.Text) > -1)
Response.Write(str[i]);
}
}
//获取一段字符串的首字母
public string GetChineseSpell(string strText)
{
int len = strText.Length;
string myStr = "";
for (int i = 0; i < len; i++)
{
myStr += getSpell(strText.Substring(i, 1));
}
return myStr;
}

public string getSpell(string myChar)
{
byte[] arrCN = System.Text.Encoding.Default.GetBytes(myChar);
if (arrCN.Length > 1)
{
int area = (short)arrCN[0];
int pos = (short)arrCN[1];
int code = (area << 8) + pos;
int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 };
for (int i = 0; i < 26; i++)
{
int max = 55290;
if (i != 25) max = areacode[i + 1];
if (areacode[i] <= code && code < max)
{
return System.Text.Encoding.Default.GetString(new byte[] { (byte)(65 + i) });
}
}
return "*";
}
else return myChar;
}
}

wangping_li 2008-06-02
  • 打赏
  • 举报
回复
高手们帮帮忙啊.急....
wangping_li 2008-06-02
  • 打赏
  • 举报
回复
我这个是静态的,不用数据库的.只是模似一下
wangping_li 2008-06-02
  • 打赏
  • 举报
回复
NekChan 你这个方法转换以后是不是我在textChanged事件里面调用?
wxg22526451 2008-06-02
  • 打赏
  • 举报
回复
ComBox实现?
数据库表得设计好,
拼音用几列,或只用1列加分隔符的字符串
根据输入内容查询数据库拼音列,
再重新把ComBox绑定数据~
NekChan 2008-06-02
  • 打赏
  • 举报
回复
参考:
//得到单个字符的首字母 
private String GetOneIndex(String OneIndexTxt)
{
if(Convert.ToChar(OneIndexTxt)>=0 && Convert.ToChar(OneIndexTxt)<256)
return OneIndexTxt;
else
{
Encoding gb2312 = Encoding.GetEncoding("gb2312");
byte[] unicodeBytes = Encoding.Unicode.GetBytes(OneIndexTxt);
byte[] gb2312Bytes = Encoding.Convert(Encoding.Unicode, gb2312, unicodeBytes);
return GetX(Convert.ToInt32(
String.Format("{0:D2}",Convert.ToInt16(gb2312Bytes[0])-160)
+ String.Format("{0:D2}",Convert.ToInt16(gb2312Bytes[1])-160)
));
}

}


//根据区位得到首字母
private String GetX(int GBCode)
{
if(GBCode >= 1601 && GBCode < 1637)return "A";
if(GBCode >= 1637 && GBCode < 1833)return "B";
if(GBCode >= 1833 && GBCode < 2078)return "C";
if(GBCode >= 2078 && GBCode < 2274)return "D";
if(GBCode >= 2274 && GBCode < 2302)return "E";
if(GBCode >= 2302 && GBCode < 2433)return "F";
if(GBCode >= 2433 && GBCode < 2594)return "G";
if(GBCode >= 2594 && GBCode < 2787)return "H";
if(GBCode >= 2787 && GBCode < 3106)return "J";
if(GBCode >= 3106 && GBCode < 3212)return "K";
if(GBCode >= 3212 && GBCode < 3472)return "L";
if(GBCode >= 3472 && GBCode < 3635)return "M";
if(GBCode >= 3635 && GBCode < 3722)return "N";
if(GBCode >= 3722 && GBCode < 3730)return "O";
if(GBCode >= 3730 && GBCode < 3858)return "P";
if(GBCode >= 3858 && GBCode < 4027)return "Q";
if(GBCode >= 4027 && GBCode < 4086)return "R";
if(GBCode >= 4086 && GBCode < 4390)return "S";
if(GBCode >= 4390 && GBCode < 4558)return "T";
if(GBCode >= 4558 && GBCode < 4684)return "W";
if(GBCode >= 4684 && GBCode < 4925)return "X";
if(GBCode >= 4925 && GBCode < 5249)return "Y";
if(GBCode >= 5249 && GBCode <= 5589)return "Z";
if(GBCode >= 5601 && GBCode <= 8794)
{
String CodeData = "cjwgnspgcenegypbtwxzdxykygtpjnmjqmbsgzscyjsyyfpggbzgydywjkgaljswkbjqhyjwpdzlsgmr"
+ "ybywwccgznkydgttngjeyekzydcjnmcylqlypyqbqrpzslwbdgkjfyxjwcltbncxjjjjcxdtqsqzycdxxhgckbphffss"
+ "pybgmxjbbyglbhlssmzmpjhsojnghdzcdklgjhsgqzhxqgkezzwymcscjnyetxadzpmdssmzjjqjyzcjjfwqjbdzbjgd"
+ "nzcbwhgxhqkmwfbpbqdtjjzkqhylcgxfptyjyyzpsjlfchmqshgmmxsxjpkdcmbbqbefsjwhwwgckpylqbgldlcctnma"
+ "eddksjngkcsgxlhzaybdbtsdkdylhgymylcxpycjndqjwxqxfyyfjlejbzrwccqhqcsbzkymgplbmcrqcflnymyqmsqt"
+ "rbcjthztqfrxchxmcjcjlxqgjmshzkbswxemdlckfsydsglycjjssjnqbjctyhbftdcyjdgwyghqfrxwckqkxebpdjpx"
+ "jqsrmebwgjlbjslyysmdxlclqkxlhtjrjjmbjhxhwywcbhtrxxglhjhfbmgykldyxzpplggpmtcbbajjzyljtyanjgbj"
+ "flqgdzyqcaxbkclecjsznslyzhlxlzcghbxzhznytdsbcjkdlzayffydlabbgqszkggldndnyskjshdlxxbcghxyggdj"
+ "mmzngmmccgwzszxsjbznmlzdthcqydbdllscddnlkjyhjsycjlkohqasdhnhcsgaehdaashtcplcpqybsdmpjlpcjaql"
+ "cdhjjASPrchngjnlhlyyqyhwzpnccgwwmzffjqqqqxxaclbhkdjxdgmmydjxzllsygxgkjrywzwyclzmcsjzldbndcfc"
+ "xyhlschycjqppqagmnyxpfrkssbjlyxyjjglnscmhcwwmnzjjlhmhchsyppttxrycsxbyhcsmxjsxnbwgpxxtaybgajc"
+ "xlypdccwqocwkccsbnhcpdyznbcyytyckskybsqkkytqqxfcwchcwkelcqbsqyjqcclmthsywhmktlkjlychwheqjhtj"
+ "hppqpqscfymmcmgbmhglgsllysdllljpchmjhwljcyhzjxhdxjlhxrswlwzjcbxmhzqxsdzpmgfcsglsdymjshxpjxom"
+ "yqknmyblrthbcftpmgyxlchlhlzylxgsssscclsldclepbhshxyyfhbmgdfycnjqwlqhjjcywjztejjdhfblqxtqkwhd"
+ "chqxagtlxljxmsljhdzkzjecxjcjnmbbjcsfywkbjzghysdcpqyrsljpclpwxsdwejbjcbcnaytmgmbapclyqbclzxcb"
+ "nmsggfnzjjbzsfqyndxhpcqkzczwalsbccjxpozgwkybsgxfcfcdkhjbstlqfsgdslqwzkxtmhsbgzhjcrglyjbpmljs"
+ "xlcjqqhzmjczydjwbmjklddpmjegxyhylxhlqyqhkycwcjmyhxnatjhyccxzpcqlbzwwwtwbqcmlbmynjcccxbbsnzzl"
+ "jpljxyztzlgcldcklyrzzgqtgjhhgjljaxfgfjzslcfdqzlclgjdjcsnclljpjqdcclcjxmyzftsxgcgsbrzxjqqcczh"
+ "gyjdjqqlzxjyldlbcyamcstylbdjbyregklzdzhldszchznwczcllwjqjjjkdgjcolbbzppglghtgzcygezmycnqcycy"
+ "hbhgxkamtxyxnbskyzzgjzlqjdfcjxdygjqjjpmgwgjjjpkjsbgbmmcjssclpqpdxcdyykypcjddyygywchjrtgcnyql"
+ "dkljczzgzccjgdyksgpzmdlcphnjafyzdjcnmwescsglbtzcgmsdllyxqsxsbljsbbsgghfjlwpmzjnlyywdqshzxtyy"
+ "whmcyhywdbxbtlmswyyfsbjcbdxxlhjhfpsxzqhfzmqcztqcxzxrdkdjhnnyzqqfnqdmmgnydxmjgdhcdycbffallztd"
+ "ltfkmxqzdngeqdbdczjdxbzgsqqddjcmbkxffxmkdmcsychzcmljdjynhprsjmkmpcklgdbqtfzswtfgglyplljzhgjj"
+ "gypzltcsmcnbtjbhfkdhbyzgkpbbymtdlsxsbnpdkleycjnycdykzddhqgsdzsctarlltkzlgecllkjljjaqnbdggghf"
+ "jtzqjsecshalqfmmgjnlyjbbtmlycxdcjpldlpcqdhsycbzsckbzmsljflhrbjsnbrgjhxpdgdjybzgdlgcsezgxlblg"
+ "yxtwmabchecmwyjyzlljjshlgndjlslygkdzpzxjyyzlpcxszfgwyydlyhcljscmbjhblyjlycblydpdqysxktbytdkd"
+ "xjypcnrjmfdjgklccjbctbjddbblblcdqrppxjcglzcshltoljnmdddlngkaqakgjgyhheznmshrphqqjchgmfprxcjg"
+ "dychghlyrzqlcngjnzsqdkqjymszswlcfqjqxgbggxmdjwlmcrnfkkfsyyljbmqammmycctbshcptxxzzsmphfshmclm"
+ "ldjfyqxsdyjdjjzzhqpdszglssjbckbxyqzjsgpsxjzqznqtbdkwxjkhhgflbcsmdldgdzdblzkycqnncsybzbfglzzx"
+ "swmsccmqnjqsbdqsjtxxmbldxcclzshzcxrqjgjylxzfjphymzqqydfqjjlcznzjcdgzygcdxmzysctlkphtxhtlbjxj"
+ "lxscdqccbbqjfqzfsltjbtkqbsxjjljchczdbzjdczjccprnlqcgpfczlclcxzdmxmphgsgzgszzqjxlwtjpfsyaslcj"
+ "btckwcwmytcsjjljcqlwzmalbxyfbpnlschtgjwejjxxglljstgshjqlzfkcgnndszfdeqfhbsaqdgylbxmmygszldyd"
+ "jmjjrgbjgkgdhgkblgkbdmbylxwcxyttybkmrjjzxqjbhlmhmjjzmqasldcyxyqdlqcafywyxqhz";
String _gbcode = GBCode.ToString();
int pos = (Convert.ToInt16(_gbcode.Substring(0,2))-56)*94+Convert.ToInt16(_gbcode.Substring(_gbcode.Length-2,2));
return CodeData.Substring(pos-1,1);
}
return " ";
zdjray 2008-06-02
  • 打赏
  • 举报
回复
使用ASP.NET AJAX Control Toolkit中的ListSearchExtender
wangping_li 2008-06-02
  • 打赏
  • 举报
回复
我用winform实现. 能否给点源码.谢谢.asp.net也行
比如:测试商品一(对应的汉字首母是csspy)和测试商品二(csspe)
当我输入cssp或者就一个c的时候怎么让两个都显示出来?谢谢
jinjazz 2008-06-02
  • 打赏
  • 举报
回复
没个中文都应该事先对应好自己的拼音简写,然后用ajax去动态匹配
sy1987611 2008-06-02
  • 打赏
  • 举报
回复
放在TextChanged里面是一样的阿,你的文本框的名字不会跟ComBox的名字一样吧
if (str[i].Substring(0, 文本框的id.Text.Length).IndexOf("文本框的id".Text) > -1)
{
MessageBox.Show(str[i]);
}

wangping_li 2008-06-02
  • 打赏
  • 举报
回复
我们个东西不能在Button事件里面写啊,应该到TextChanged事件里面.但是那样就报错.重新绑定也有点问题.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧