亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# ComboBox的聯動操作(三層架構)

2020-01-24 01:10:08
字體:
來源:轉載
供稿:網友

項目需求:根據年級下拉框的變化使得科目下拉框綁定次年級下對應有的值

我們用三層架構的模式來實現

1.我們想和數據庫交互,我們首先得來先解決DAL數據庫交互層

01.獲得年級下拉框的數據

在GradeDAL類中

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.SqlClient;using System.Data;using MySchool.Model;using System.Configuration;namespace MySchool.DAL{ //數據訪問層 public class GradeDAL {  public static string Constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;  #region 獲得年級表   public DataTable SelectGrade(string gradetype)   {   //和數據庫交互   string str = "Data Source=.;initial catalog=MySchool;uid=sa";   SqlConnection con = new SqlConnection(str);   string sql = "";   if (gradetype=="")   {    sql = "select * from Grade";   }   else   {    sql = "select * from Student where GradeId in (select GradeId from Grade where GradeName='" + gradetype + "')";   }      SqlDataAdapter da = new SqlDataAdapter(sql, con);   DataSet ds = new DataSet();   //捕獲異常   try   {    da.Fill(ds, "stuInfo");   }   catch (Exception ex)   {    throw new Exception(ex.Message);   }   //返回一張表的數據   return ds.Tables["stuInfo"];  }  #endregion  #region 獲取年級數據,為在下拉框中顯示   //定義一個集合,儲存年級信息   List<Grade> list = new List<Grade>();   #region 方法一: 以返回表的方式   public DataTable LoadCombox()   {    string sql = "select * from Grade";    DataTable dt = SQLHelper.ExecuteDataTable(sql);    return dt;   }   #endregion   #region 方法二:以返回集合的方式   public List<Grade> Loadcombox2()    {    string sql = "select * from Grade";    DataTable dt = SQLHelper.ExecuteDataTable(sql);    //方法一:    foreach (DataRow row in dt.Rows)    {     //每一個row代表表中的一行,所以一行對應一個年級對象     Grade grade = new Grade();     grade.GradeId = Convert.ToInt32(row["gradeid"]);     grade.GradeName = row["gradename"].ToString();     list.Add(grade);    }    //方法二:(使用MyTool類)    //MyTool tool=new MyTool();    //list = tool.DataTableToList<Grade>(dt);    return list;   }  #endregion   #region 方法三:要求使用using語句   public List<Grade> LoadCombox3()    {    //using的作用可以釋放資源,利于資源的回收(可以省略關閉連接)    using (SqlConnection con=new SqlConnection(Constr))    {     try     {      string sql = "select * from Grade";      SqlCommand cmd = new SqlCommand(sql,con);      con.Open();      SqlDataReader dr = cmd.ExecuteReader();      while (dr.Read())      {       Grade gr = new Grade();       gr.GradeId = Convert.ToInt32(dr["GradeId"]);       gr.GradeName=dr["GradeName"].ToString();       list.Add(gr);      }         }     catch (Exception ex)     {      throw new Exception(ex.Message);      }    }    return list;   }  #endregion   #endregion       }}

02.在業務邏輯層

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MySchool.DAL;using System.Data;using MySchool.Model;namespace MySchool.BLL{ public class GradeBLL {  GradeDAL gradedal = new GradeDAL();  #region 獲取年級數據,為在下拉框中顯示  public DataTable SelectGrade(string gradetype)  {   return gradedal.SelectGrade(gradetype);  }  public DataTable LoadCombox()  {   return gradedal.LoadCombox();  }    public List<Grade> Loadcombox2()  {   return gradedal.Loadcombox2();  }  #endregion  public List<Grade> LoadCombox3()  {   return gradedal.LoadCombox3();  }   }}

03.在窗體UI層

在Load事件中加載年級下拉框

 private void FrmSelectResult_Load(object sender, EventArgs e)  {   #region 加載年級下拉框   try   {    List<Grade> list = gradedal.LoadCombox3();    list.Insert(0, new Grade() { GradeId=-1,GradeName="--全部--" });    cboGrade.ValueMember = "GradeId";    cboGrade.DisplayMember = "GradeName";    cboGrade.DataSource = list;   }   catch (Exception ex)   {    MessageBox.Show(ex.Message);   }         #endregion   #region 加載科目下拉框   //try   //{   // list2 = subjectdal.LoadComboxSub();   // list2.Insert(0, new Subject() { SubjectId = -1, SubjectName = "--全部--" });   // cboSubject.ValueMember = "SubjectId";   // cboSubject.DisplayMember = "SubjectName";   // cboSubject.DataSource = list2;   //}   //catch (Exception ex)   //{   // MessageBox.Show(ex.Message);   //}      #endregion  }

其中在使用

獲得年級下拉框隱藏值得方法(2)
int num = Convert.ToInt32(cboGrade.SelectedValue);

加載年級下拉框時:會出現的錯誤的寫法

把cboGrade.DataSource = list;寫在
 cboGrade.ValueMember = "GradeId";
 cboGrade.DisplayMember = "GradeName";
上面
即:

 #region 加載年級下拉框   try   {    List<Grade> list = gradedal.LoadCombox3();    list.Insert(0, new Grade() { GradeId=-1,GradeName="--全部--" });    cboGrade.DataSource = list;    cboGrade.ValueMember = "GradeId";    cboGrade.DisplayMember = "GradeName";           }   catch (Exception ex)   {    MessageBox.Show(ex.Message);   }         #endregion

這是就會出現下面錯誤:

在年級的SelectedIndexChanged事件中

 try   {    //根據年級取得科目信息并綁定     #region 獲得年級下拉框隱藏值得方法(1)    Grade sub = (Grade)cboGrade.SelectedItem;    int num =sub.GradeId;    #endregion    #region 獲得年級下拉框隱藏值得方法(2)    // int num = Convert.ToInt32(cboGrade.SelectedValue.ToString());    #endregion        List<Subject> list = subjectdal.LoadComboxSub2(num);        cboSubject.ValueMember = "SubjectId";    cboSubject.DisplayMember = "SubjectName";    cboSubject.DataSource = list;           }   catch (Exception)   {    MessageBox.Show("出錯");   }

以上就是本文的全部內容,希望對大家學習C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩中文字幕在线| 成人免费直播live| 国产精品777| 国产精品露脸av在线| 久久久久久久久电影| 91亚洲精品久久久| 亚洲免费福利视频| 青青精品视频播放| 亚洲网站在线播放| 国产精品成久久久久三级| 久久精品国产99国产精品澳门| 欧美高清视频在线播放| 亚洲黄色在线看| 国产在线观看一区二区三区| 国内精品久久久久伊人av| 国产精品亚洲激情| 91国在线精品国内播放| 中文字幕欧美在线| 欧美天天综合色影久久精品| 亚洲精品成人av| 欧美激情精品久久久久久蜜臀| 日韩精品免费在线观看| 日韩精品中文字幕在线| 亚洲第一色中文字幕| 国产69久久精品成人| 亚洲国产精品yw在线观看| 亚洲精品一区在线观看香蕉| 成人黄色免费片| 国产精品一区二区av影院萌芽| 国产精品成人国产乱一区| 欧美亚洲日本网站| 欧美色xxxx| www.99久久热国产日韩欧美.com| 人体精品一二三区| 热久久99这里有精品| 日韩亚洲国产中文字幕| 国产丝袜一区视频在线观看| 日本成人在线视频网址| 国产欧美日韩视频| 亚洲爱爱爱爱爱| 国产精品18久久久久久首页狼| 成人午夜在线视频一区| 伊人青青综合网站| 亚洲精品自在久久| 中文字幕日韩av综合精品| 亚洲欧美国产高清va在线播| 久久久午夜视频| 日韩最新免费不卡| 岛国av一区二区| 91精品国产高清久久久久久久久| 亚洲欧洲在线视频| 中文字幕无线精品亚洲乱码一区| 5566成人精品视频免费| 超碰日本道色综合久久综合| 亚洲视频在线免费看| 欧美在线不卡区| 日韩大陆欧美高清视频区| 亚洲精品国产suv| 亚洲精品之草原avav久久| 国产精品美女www爽爽爽视频| 亚洲福利视频免费观看| 国产精品欧美在线| 日韩av在线一区| 九九热r在线视频精品| 久99久在线视频| 亚洲精品日产aⅴ| 97国产一区二区精品久久呦| 亚洲综合中文字幕在线| 亚洲人永久免费| 成人a在线视频| 亚洲欧美国产精品专区久久| 久久久久久com| 中文字幕日韩精品在线| 欧美福利视频在线观看| 成人在线免费观看视视频| 91成人在线播放| 国产亚洲精品久久久久久777| 久久国产精品99国产精| 成人一区二区电影| 正在播放亚洲1区| 欧美大秀在线观看| 欧美日韩在线一区| 91久久久久久久久久久| 97视频com| 国产亚洲欧美一区| 992tv成人免费视频| 精品自拍视频在线观看| 国产欧美一区二区三区四区| 亚洲欧美日韩国产精品| 在线观看国产精品91| 欧美日韩国产区| 精品视频久久久久久久| 成人午夜在线视频一区| 欧美激情精品久久久久久蜜臀| 国产精品久久久久国产a级| 国产精品91在线观看| 国产99久久精品一区二区永久免费| 日韩激情av在线免费观看| 国产视频亚洲精品| 欧美极品美女视频网站在线观看免费| 亚洲精品视频在线观看视频| 欧美性高潮床叫视频| 精品国内亚洲在观看18黄| 国产女精品视频网站免费| 欧美噜噜久久久xxx| 欧美亚洲视频一区二区| 中文欧美日本在线资源| 一区二区三区视频观看| 久久久视频精品| 97色在线观看| 国产亚洲精品美女久久久久| 亚洲国产精品电影在线观看| 91视频免费网站| 中文字幕亚洲欧美日韩高清| 亚洲精品久久久久久久久久久久| 91高清免费视频| 日本精品久久中文字幕佐佐木| 日韩美女写真福利在线观看| 国产午夜精品全部视频在线播放| 欧美日韩成人在线视频| 中文字幕亚洲精品| 成人在线免费观看视视频| 欧洲一区二区视频| 精品视频偷偷看在线观看| 最新亚洲国产精品| 欧美高清在线视频观看不卡| 国产亚洲成av人片在线观看桃| 国产日韩欧美在线播放| 国产一区二区三区免费视频| 日韩精品在线观看一区| 成人黄色激情网| 亚洲精品福利视频| 欧美日韩视频免费播放| 午夜精品一区二区三区在线视频| 国产精品极品美女粉嫩高清在线| 亚洲第一网站男人都懂| 日日噜噜噜夜夜爽亚洲精品| 欧美黄色www| 在线观看国产精品91| 亚洲精品电影在线| 亚洲福利影片在线| 国产视频999| 国产精品久久久久久久久免费看| 国产精品 欧美在线| 国产精品九九久久久久久久| 美女av一区二区三区| 亚洲国产小视频| 久久精品99久久久香蕉| 91免费欧美精品| 国内精品久久久久影院优| 情事1991在线| 成人精品在线视频| 91精品久久久久久久久中文字幕| 热久久美女精品天天吊色| 成人在线视频福利| 91精品免费久久久久久久久| 成人淫片在线看| 欧美最猛黑人xxxx黑人猛叫黄| 色偷偷偷亚洲综合网另类| 亚洲人成电影网站色www| 日韩在线观看网站| 色琪琪综合男人的天堂aⅴ视频| 免费不卡在线观看av| 久久精品一区中文字幕|