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"] = "【無產品】";
}
}
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
Name 屬性作為 Key,同層唯一;父子關係通過 Parent 屬性天然維護,無需手動拼接 Key。