1. 程式人生 > 其它 >WPF獲取下拉框選中值為0??

WPF獲取下拉框選中值為0??

技術標籤:C#WPFSQLc#wpfcomboboxmysql

一、在進行解釋問題之前,先來學習一下WPF 基本控制元件:

file:///F:/2020-06-22/06_WPF%20%E5%9F%BA%E6%9C%AC%E6%8E%A7%E4%BB%B6%E7%9A%84%E7%AE%80%E4%BB%8B.pdf

二、問題處:

1.首先我在載入事件中通過服務方法繫結cbo_dhNum下拉框的顯示值(dhNum)和選中值(stockOrderID)。

//補貨單號
            DataTable bhd = myClient.Window_Loaded_SelectBhsqForm().Tables[0];
            txt_bhNumber.ItemsSource = bhd.DefaultView;
            txt_bhNumber.DisplayMemberPath = "bhNum";
            txt_bhNumber.SelectedValuePath = "stockAddGoodsID";

2.然後進行在進行獲取該下拉框選中值的時候發現值為null。

然後去頁面檢視下拉框是否繫結成功時發現下拉框是有值的,這是怎麼回事呢?

三、解決流程:

分析:

  1. 獲取該下拉框ID的寫法沒什麼問題,只是獲取不到選中值,然後,剛剛啟動後在頁面上發現下拉框的顯示值是繫結成功的,此時可以進行初步推斷:是不是繫結選中值的引數傳錯了?

2.帶著問題可以去SQL_Server資料庫中的對應的儲存過程去看下選中值和繫結值是否和頁面上傳的是否一致。

3.找到對應的方法後,我發現在查詢時繫結值存在並跟繫結的是一致的,但是選中值我只進行了排序而沒有查出來。

4.解決開始:把該表的ID查出來。

        SELECT  ROW_NUMBER() over(order by t_stockOrder.stockOrderID)as xhHao,t_stockOrder.stockOrderID, t_commodity.commodityID, t_commodity.code, t_commodity.number, t_commodity.name, 
                t_commodity.as_unit_id, t_unit.name AS unit, t_commodity.InPrice, t_commodity.retailPrice, B_CurrentInventory.extant, 
                t_commodity.as_goodsTrade_id, t_goodsTrade.name AS hShang, t_commodity.norm, t_commodity.as_brand_id, 
                t_brand.name AS brand, t_goodsTrade.number AS hShangNum, t_depot.depotName, t_stockOrder.number AS dhNum, 
                t_stockOrder.masure, t_stockOrder.zt_masure, t_stockOrder.zhiDan_id, t_stockOrder.buyer_id, t_stockOrder.checker_id, 
                t_stockOrder.note, t_stockOrder.jj_Sum, t_stockOrder.effectiveDate, t_stockOrder.date, t_commodity.as_feed_id, 
                t_mianLiao.name AS mLiao, t_commodity.as_season_id, t_detail_gather.detail_name AS season
		FROM      t_commodity INNER JOIN
                B_CurrentInventory ON t_commodity.commodityID = B_CurrentInventory.CommodityID INNER JOIN
                t_unit ON t_commodity.as_unit_id = t_unit.unitID INNER JOIN
                t_goodsTrade ON t_commodity.as_goodsTrade_id = t_goodsTrade.goodsTradeID INNER JOIN
                t_brand ON t_commodity.as_brand_id = t_brand.brandID INNER JOIN
                t_stockOrder ON t_commodity.commodityID = t_stockOrder.CommodityID INNER JOIN
                t_mianLiao ON t_commodity.as_feed_id = t_mianLiao.mianLiaoID INNER JOIN
                t_detail_gather ON t_commodity.as_season_id = t_detail_gather.t_detail_gatherID CROSS JOIN
                t_depot

5.然後再去頁面啟動除錯發現選中值 = 2

然後這個小Bug就被解決了。

四、總結

可能在交了學費學這行的時候那個Bug就已經開始存在了,然後就是慣例的增刪查改各種各樣、大大小小的bug;所以說“地基”是整棟樓的根本,支柱。只有地基打好了,接下來的建樓時間才會更輕鬆、更快速;

不瞞你們說,這個Bug我快一節課才找出來的(一開始我以為頁面上下拉框有繫結值,選中值也肯定是有的,想了一段時間才知道是儲存方法的選中值(stockOrderID)沒有參與查詢,只是排序時用了它),所以遇到問題一步一步來,別忘了最基礎的東西!