(C#)WPF类似下拉框的自动完成源

2017-05-31 11:19:31来源:CSDN作者:GuangXi_YangNan人点击

1、sql数据库


   --查询全国的车次,用于车次下拉框的模糊查询    if @type='cbo_TrainAll'    begin    select AllTrain=stuff    (    (select '@'+rtrim(train_name) from t_train_list where no_running=0  for xml path('')),1,1,'')    end2、服务端查询数据库代码
 //查询全国的车次,用于车次下拉框的模糊查询        [OperationContract]
        public DataSet cbo_TrainAll()
        {
            DataSet ds = new DataSet();
            SqlParameter[] mySqlParameter =
                       {
                new SqlParameter("@type",SqlDbType.NChar)
            };
            mySqlParameter[0].Value = "cbo_TrainAll";
            DataTable myDataTable = myDAL.QueryDataTable("wpfComboboxBingding", mySqlParameter);
            ds.Tables.Add(myDataTable);
            return ds;
        }  3、页面设计,使用文本框、按钮、listbox组成
 
4、页面的.CS代码   //建立一个属性表,用于装载数据        internal class StationModel        {            public string KeyID { setget; }  // 车站ID                public string Name { setget; }  // 名称               public string PYString { setget; }   // 名称拼音            public string ShortPYString { setget; }   // 拼音简码        }        BLL_TrainWay.BLL_TrainWayClient bll_TrainWay = new BLL_TrainWay.BLL_TrainWayClient();        BLL_BingdingCombobox.BLL_BingdingComboboxClient bll_Cbo = new BLL_BingdingCombobox.BLL_BingdingComboboxClient();               internal List<StationModel> TrainStationList = new List<StationModel>();        TextBox txt;             //窗口的Loaded加载事件        private void UserControl_Loaded(object sender, RoutedEventArgs e)        {                         //查找出数据库所有的列出信息,并加入到list集合里               DataTable dt = bll_Cbo.cbo_TrainAll().Tables[0];            string station_names = dt.Rows[0]["AllTrain"].ToString().Trim();            TrainStationList = new List<StationModel>();            string[] citys = station_names.Split('@');            if (citys != null)            {                for (int i = 0; i < citys.Length; i++)                {                    StationModel info = new StationModel();                    info.Name = citys[i];                    TrainStationList.Add(info);                }            }        }        #region  下拉框自动完成源        //列车车次文本框改变事件        private void txt_TrainName_TextChanged(object sender, TextChangedEventArgs e)        {            //设置一个位置坐标,用于调整listbox的位置            Thickness margin = new Thickness(546, 37, 0, -100);            //获取文本框的值            string str = txt_TrainName.Text.Trim();            //list_TrainName-listbox的控件名称,TrainStationList声明的集合变量            setTrainText(str, margin, list_TrainName, TrainStationList);        }        //设置列車listbox的内容        internal void setTrainText(string str, Thickness margin, ListBox list_TrainName, List<StationModel> statt)        {            List<StationModel> list = statt.FindAll((station) => {                return station.Name.IndexOf(str) > -1;            });            if (list.Count > 0)            {                list_TrainName.Margin = margin;                list_TrainName.ItemsSource = list;                list_TrainName.DisplayMemberPath = "Name";                Panel.SetZIndex(list_TrainName, 99);                list_TrainName.Height = 100;                list_TrainName.Visibility = Visibility.Visible;            }            else            {                list_TrainName.Visibility = Visibility.Hidden;                Panel.SetZIndex(list_TrainName, 0);                list_TrainName.ItemsSource = null//清空数据源            }        }        //listbox鼠标选中左边单击事件        private void list_TrainName_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)        {            try            {                //获取选中的数据,绑定到文本框                txt_TrainName.Text = (list_TrainName.SelectedItem as StationModel).Name;                //将listbox隐藏                this.list_TrainName.Visibility = Visibility.Hidden;            }            catch { }        }        //按钮单击事件,显示全部列出信息        private void btn_trainName_Click(object sender, RoutedEventArgs e)        {            Thickness margin = new Thickness(546, 37, 0, -100);                        btn_GetSiteName(margin, list_TrainName, TrainStationList);        }        //将数据显示到listbox上面        internal void btn_GetSiteName(Thickness margin, ListBox list_TrainName, List<StationModel> statt)        {            list_TrainName.Margin = margin;            list_TrainName.ItemsSource = statt;            list_TrainName.DisplayMemberPath = "Name";            Panel.SetZIndex(list_TrainName, 99);            list_TrainName.Visibility = Visibility.Visible;        }        #endregion

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台