我有一个TreeView
和一个单独的panel
3 checkboxes
。
Treeview数据是从数据库中提取的,此数据库在Product
表中有两个表Model
和Model
,有3个columns
- twoDoor
,{ {1}}和threeDoor
。
我的TreeView看起来像这样;
fiveDoor
在单独的面板上有3 CAR(PRODUCT)
->FORD(MODEL)
->BMW(MODEL)
->VW(MODEL)
;
这些checkboxes
的状态已在checkboxes
db中定义。
如何在Model
?
我的代码:
TreeView
答案 0 :(得分:1)
如果我正确理解了这个问题,您可以采取以下措施。
首先,创建一个类来保存您的Model
信息:
class ModelInfo
{
public string Name { get; set; }
public bool TwoDoor { get; set; }
public bool ThreeDoor { get; set; }
public bool FiveDoor { get; set; }
}
其次,修改您的PopulateTreeView
方法,如下所示:
public void PopulateTreeView(int parentId, TreeNode parentNode)
{
// ...
foreach (DataRow dr in dtchildc.Rows)
{
// Populate model info from the data
var modelInfo = new ModelInfo { Name = dr["ModelName"].ToString() };
//modelInfo.TwoDoor = dr[...];
//modelInfo.ThreeDoor = dr[...];
//modelInfo.FiveDoor = dr[...];
// Create and add a new node
var childNode = (parentNode == null ? treeView1.Nodes : parentNode.Nodes).Add(modelInfo.Name);
// Associate info with the node
childNode.Tag = modelInfo;
}
// ...
}
关键部分是将ModelInfo
存储在Node.Tag
属性中,以便以后检索。
最后,订阅TreeView.AfterSelect事件并在事件处理程序中放入如下内容:
// Get the model info from the selected node
var modelInfo = e.Node != null ? e.Node.Tag as ModelInfo : null;
// Update the checkboxes accordingly
chkTwoDoor.Checked = modelInfo != null && modelInfo.TwoDoor;
chkThreeDoor.Checked = modelInfo != null && modelInfo.ThreeDoor;
chkFiveDoor.Checked = modelInfo != null && modelInfo.FiveDoor;
表示双状态复选框样式,或者
chkTwoDoor.CheckState = modelInfo == null ? CheckState.Indeterminate : modelInfo.TwoDoor ? CheckState.Checked : CheckState.Unchecked;
chkThreeDoor.CheckState = modelInfo == null ? CheckState.Indeterminate : modelInfo.ThreeDoor ? CheckState.Checked : CheckState.Unchecked;
chkFiveDoor.CheckState = modelInfo == null ? CheckState.Indeterminate : modelInfo.FiveDoor ? CheckState.Checked : CheckState.Unchecked;
表示三态复选框样式。