比如说我在一个textbox上面输入东西,
下面的Listview从数据库里面显示东西.
textbox上输入的东西自动去数据库里面查询找匹配的.
不只是英文的搜索,中文的也要有.
比如数据库里面有个字段叫"蒙牛",
我在textbox上输入mn就能搜索的出来.
就是也能按照字体的首写拼音搜索.
这个怎么实现啊.
各位大虾们救命.
还有5天时间就要交项目了!~

解决方案 »

  1.   

    如果是搜索比较固定的字段,比如企业名称,你可以设定一个速记码
    比如
    公司名字  速记码 
    伊利      YL
    蒙牛      MN
    光明      GM
    雀巢      YC
    这个速记码是用户自己设定的,根据自己的习惯,然后搜索的时候搜索相应的速记码就是搜索公司名字是一样的,很多成熟的软件比如用友都有这样的功能,也是这样做的,没有这个速记码,在牛的人也不知道你输入mn,要查找蒙牛的
      

  2.   

    GOOGLE
    C# 拼音首字母
    SQL 拼音首字母
    很多结果的
    在数据层和逻辑层都能很方便的处理呀
    不过有个前提条件,数据量不大或对速度要求不高
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;namespace indexCode
    {
        class Program
        {
           
            static void Main(string[] args)
            {            DataTable dt = new DataTable();
                dt.Columns.Add("id",typeof(int));
                dt.Columns.Add("Field",typeof(string));
                dt.Rows.Add(new object[] { 1,"蒙牛"});
                dt.Rows.Add(new object[] { 2, "美女" });
                dt.Rows.Add(new object[] { 3, "伊犁" });
                dt.Rows.Add(new object[] { 4, "伊利" });            string condition = "MN";
                IList<DataRow> result=new List<DataRow>();
                foreach (DataRow dr in dt.Rows) {
                    if (ChinaIndexChar.IndexCode(dr[1].ToString()) == condition) {
                        result.Add(dr);
                    }
                }
                foreach (DataRow dr in result) {
                    Console.WriteLine("{0}:{1}",dr[0],dr[1]);
                }
                Console.Read();
            }        public class ChinaIndexChar
            {
                public static String IndexCode(String IndexTxt)
                {
                    String _Temp = null;
                    for (int i = 0; i < IndexTxt.Length; i++)
                        _Temp = _Temp + GetOneIndex(IndexTxt.Substring(i, 1));
                    return _Temp;
                }
                //得到单个字符的首字母
                private static 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 static 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";
      

  4.   

    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".ToUpper();
                        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 " ";
                }
            }
        }
    }其中ChinaIndexChar类是在网上搜的,你可以换一个更好的