一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C# - C# ComboBox的聯(lián)動(dòng)操作(三層架構(gòu))

C# ComboBox的聯(lián)動(dòng)操作(三層架構(gòu))

2021-11-21 15:39天盡頭的那片海 C#

這篇文章主要介紹了C# ComboBox的聯(lián)動(dòng)操作(三層架構(gòu)),根據(jù)下拉框的變化使得下拉框綁定對(duì)應(yīng)值,感興趣的小伙伴們可以參考一下

項(xiàng)目需求:根據(jù)年級(jí)下拉框的變化使得科目下拉框綁定次年級(jí)下對(duì)應(yīng)有的值

C# ComboBox的聯(lián)動(dòng)操作(三層架構(gòu))

我們用三層架構(gòu)的模式來(lái)實(shí)現(xiàn)

C# ComboBox的聯(lián)動(dòng)操作(三層架構(gòu))

1.我們想和數(shù)據(jù)庫(kù)交互,我們首先得來(lái)先解決dal數(shù)據(jù)庫(kù)交互層

C# ComboBox的聯(lián)動(dòng)操作(三層架構(gòu))

01.獲得年級(jí)下拉框的數(shù)據(jù)

在gradedal類中

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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
{
 //數(shù)據(jù)訪問(wèn)層
 public class gradedal
 {
  public static string constr = configurationmanager.connectionstrings["constr"].connectionstring;
  #region 獲得年級(jí)表
   public datatable selectgrade(string gradetype)
  {
   //和數(shù)據(jù)庫(kù)交互
   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);
   }
   //返回一張表的數(shù)據(jù)
   return ds.tables["stuinfo"];
  }
  #endregion
 
  #region 獲取年級(jí)數(shù)據(jù),為在下拉框中顯示
   //定義一個(gè)集合,儲(chǔ)存年級(jí)信息
   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)
    {
     //每一個(gè)row代表表中的一行,所以一行對(duì)應(yīng)一個(gè)年級(jí)對(duì)象
     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語(yǔ)句
   public list<grade> loadcombox3()
   {
    //using的作用可以釋放資源,利于資源的回收(可以省略關(guān)閉連接)
    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.在業(yè)務(wù)邏輯層

C# ComboBox的聯(lián)動(dòng)操作(三層架構(gòu))

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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 獲取年級(jí)數(shù)據(jù),為在下拉框中顯示
 
  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事件中加載年級(jí)下拉框

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
private void frmselectresult_load(object sender, eventargs e)
 {
  #region 加載年級(jí)下拉框
  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
 }

其中在使用

獲得年級(jí)下拉框隱藏值得方法(2)
int num = convert.toint32(cbograde.selectedvalue);

加載年級(jí)下拉框時(shí):會(huì)出現(xiàn)的錯(cuò)誤的寫(xiě)法

把cbograde.datasource = list;寫(xiě)在
 cbograde.valuemember = "gradeid";
 cbograde.displaymember = "gradename";
上面
即:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#region 加載年級(jí)下拉框
  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

這是就會(huì)出現(xiàn)下面錯(cuò)誤:

C# ComboBox的聯(lián)動(dòng)操作(三層架構(gòu))

在年級(jí)的selectedindexchanged事件中

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
try
  {
 
   //根據(jù)年級(jí)取得科目信息并綁定
   #region 獲得年級(jí)下拉框隱藏值得方法(1)
   grade sub = (grade)cbograde.selecteditem;
   int num =sub.gradeid;
   #endregion
 
   #region 獲得年級(jí)下拉框隱藏值得方法(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("出錯(cuò)");
  }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)c#程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男男按摩1069gⅴ | 欧美va在线高清 | 四虎在线视频免费观看视频 | 香港成人社区 | 国产精品怡红院永久免费 | 明星乱亚洲 | 国产偷啪视频一区 | 99久热只有精品视频免费看 | 午夜国产在线 | bl放荡受np双性 | chinese帅男gayvideo | ffyybb免费福利视频 | 性xxxxbbbbxxxx中国 | 饭冈加奈子黑人解禁在线播放 | 午夜影院和视费x看 | 亚洲人尿尿| 欧美视频精品一区二区三区 | 精品国产成人a区在线观看 精品国产91久久久久久久 | 久久成人精品免费播放 | 精品一久久香蕉国产二月 | 欧美一级高清片免费一级 | 国产福利片在线 | 欧美整片完整片视频在线 | 色老妈 | 大伊香蕉精品视频一区 | 2012年免费中文视频 | 美女逼逼软件 | 欧美视频黑鬼大战白妞 | 国产盗摄美女嘘嘘视频 | 丝袜高跟小说 | 欧美一级高清片免费一级 | 亚洲xxxxxhd奶水女人 | 日本妇人成熟免费观看18 | 国产精品怡红院永久免费 | 色哟哟哟在线精品观看视频 | 性欧美13处丶14处 | 久久成人国产精品一区二区 | 邪恶肉肉全彩色无遮盖 | 夫妻性生活影院 | 精品久久亚洲 | 国产福利一区二区在线精品 |