iT邦幫忙

0

C# 給我一些意見

  • 分享至 

  • xImage

有一個功課是要用 C# / 或者其他的編寫語言一個購買程式

數據庫結構大概如下

> 第1個                                     第2個
> +--------+------+                      +---------+--------+-----+          
> +    ID(PK)+ Name+                 +   ID(FK)    + EID(PK)  +Name+
> +    ID01   + A   +                    +   ID01 +  ED01+ A001+
> +    ID02   + B   +                    +   ID01 +  ED02+ A002+
> +    ID10   + L  +                    +   ID01 +  ED03+ A003+
> +-----------+---  +                    +   -------+-----------+

第3個 第4個 FK 也是reference 上一個PK

現在 bool +SelectedIndexChange + if 處理的,現在做到第三個的時候 發覺太多了if

process.cs

  bool ID01 = false;
  SKIP
 dataReader["ID"].ToString().Equals("ID01")
 SKIP
 if (ID01 == true)
 {
 addSubList[1].Add(dataReader["Name"] + "");
 }

Combobox.cs

    List<string>[] AddSubList;           //1
    AddSubList = dbConnect.SelectList(); //1
    combobox.Items.Clear();

    if (Combo.SelectedItem.ToString().Equals("A"))

    {
        hideCatid_lbl.Text = "ID001";
        for (int i = 0; i < AddSubList[1].Count; i++)
        {
            int number1 = subCat_combo.Items.Add("");
            subCat_combo.Items[number1] = AddSubList[1][i];
            
                if (Combo.SelectedItem.ToString().Equals("B"))

    {
        hideCatid_lbl.Text = "ID002";
        for (int i = 0; i < AddSubList[1].Count; i++)
        {
            int number1 = subCat_combo.Items.Add("");
            subCat_combo.Items[number1] = AddSubList[2][i];
        }
    }

我寫 if已經寫到發瘋 是不是不要用 Combobox

感謝各路大神

https://ithelp.ithome.com.tw/upload/images/20190608/20115329UWvEpUlxbF.png

看更多先前的討論...收起先前的討論...
小魚 iT邦大師 1 級 ‧ 2019-06-08 11:11:27 檢舉
我不懂你到底想做什麼...
假設分類如下
Combox1>combox2>Combox3>combox4
蘋果類 > 青蘋果 >有機青蘋果>品牌
蘋果類 > 青蘋果 >青蘋果>品牌
蘋果類 > 青蘋果 >大青蘋果>品牌
蘋果類 > 青蘋果 >小青蘋果>品牌
蘋果類 > 紅果 >富士蘋果>品牌

現在我的做法是
if (Combobox1.SelectedItem.ToString().Equals("蘋果類"))
LoadDataBase Combox2
SKIP
if (Combobox2SelectedItem.ToString().Equals(" 青蘋果"))
LoadDataBase Combox3
SKIP
if (Combobox3.SelectedItem.ToString().Equals(" 機青蘋果"))
LoadDataBase Combox4
SKIP


我是不是應該改用其他方法
dragonH iT邦超人 5 級 ‧ 2019-06-08 11:48:28 檢舉
如果是你是想要值變更時

去 loadDataBase

那就直接把value帶過去就好

不用一個一個寫判斷吧

話說你有4個 Combox

判斷怎麼都是 Combox1 的
優悠 iT邦新手 3 級 ‧ 2019-06-10 09:16:03 檢舉
應該是階層的下拉選單,例如,第一個選國家(台灣),第二個選縣市(台北),第三個選鄉鎮(大安區)...。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
小魚
iT邦大師 1 級 ‧ 2019-06-09 12:23:48

一般來說資料都是從資料庫來的,
你需要有幾個相關聯的資料表來做這件事,
這不是三言兩語能夠說清楚的事...

這個題目說真的要做的話沒那麼容易,
我不知道你們老師給你們多少時間來做這個題目...

0
evio0502
iT邦新手 2 級 ‧ 2019-06-10 09:17:28

~我的話會這樣~
1.宣告變數string str="ID" + i.ToString("00");
2.包一個for迴圈,I>=1;I++跑 hideCatid_lbl.Text
3.內部for迴圈J++跑 ubCat_combo.Items[number1] = AddSubList[I][J];

0
sion
iT邦新手 4 級 ‧ 2019-06-10 16:42:46

雖然我也看不懂你想做什麼
不過你把你的DB設計好,剩下的都拿去DB做查詢
就不用寫一堆if
select value from table where 欄位=selectedvalue
以你 hideCatid_lbl.Text = "ID002"為例

select ID from table where name=Combo.SelectedItem.ToString()

只要function寫好就很輕鬆了

public Combo_selectedchange(object sender, EventArgs e)
{
    hideCatid_lbl.Text = QueryID(Combo.SelectedItem.ToString());
    subCat_combo.DataSource = QueryTableAsList(Combo.SelectedItem.ToString());
}

我要發表回答

立即登入回答