首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

TreeView 采購單展示第三季:空產品號處理方案

     編輯:程式設計綜合問答

問題回顧

TreeView 以 PO 號為父節點,產品號為子節點。當產品號為空時,子節點創建邏輯報錯或顯示異常。

解決方案:數據層過濾

// 查詢時轉換空值
SELECT 
    PO_NO,
    ISNULL(PRODUCT_CODE, '【無產品】') AS PRODUCT_CODE
FROM PURCHASE_ORDER
ORDER BY PO_NO

或在綁定前預處理:

foreach (DataRow row in dt.Rows) {
    if (string.IsNullOrEmpty(row["PRODUCT_CODE"].ToString())) {
        row["PRODUCT_CODE"] = "【無產品】";
    }
}

TreeView 綁定邏輯 (VB.NET)

Dim ndPO As TreeNode = Nothing
For Each dr As DataRow In dt.Rows
    Dim poNo = dr("PO_NO").ToString()
    Dim prod = dr("PRODUCT_CODE").ToString()
    
    ' 新 PO 號創建父節點
    If ndPO Is Nothing OrElse ndPO.Text <> poNo Then
        ndPO = TreeView1.Nodes.Add(poNo, poNo)
    End If
    
    ' 產品號非空才添加子節點(或統一添加顯示佔位符)
    If Not String.IsNullOrEmpty(prod) AndAlso prod <> "【無產品】" Then
        ndPO.Nodes.Add(prod, prod)
    End If
Next

關鍵點

  • 數據源層面統一處理空值,UI 層無需特判,邏輯清晰。
  • TreeNode 的 Name 屬性作為 Key,同層唯一;父子關係通過 Parent 屬性天然維護,無需手動拼接 Key。
  • 若需保留空產品行供審計,可添加特殊標記節點(圖標區分)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved