FindNodeBiFieldValue returns 空
FindNodeBiFieldValue returns null
逻辑:
- 根据条件 "expand = true";
从数据 table 行中选择
- 执行行搜索;
- 根据字符串字段的值,我们在 "tray list".
中找到节点
方法 ExpandCurentNode()
行
TreeListNode node = treeList1.FindNodeByFieldValue("NodeName", name);
我们得到空值。
问题
为什么 FindNodeByFieldValue returns 为空?
描述
TreeList 填充方法 DataBinding()
.
属性 PopulateServiceColumns = true
.
连接码
public void connect()
{
string catBD = @"с:\db\db.01.accdb";
string conBD = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", catBD);
OleDbConnection connection = new OleDbConnection(conBD);
connection.Open();
string query1 = "SELECT * FROM TableTreeViewNoAi_12";
OleDbCommand cmd1 = new OleDbCommand(query1, connection);
dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns["ID"].AutoIncrement = true;
dt.Columns["ID"].AutoIncrementSeed = 44;
dt.Columns["ID"].AutoIncrementStep = 1;
dt.Columns.Add("PrID", typeof(int));
dt.Columns.Add("sorting", typeof(int));
dt.Columns.Add("NodeName", typeof(string));
dt.Columns.Add("Description", typeof(string));
dt.Columns.Add("Comment", typeof(string));
dt.Columns.Add("dateN", typeof(string));
dt.Columns.Add("Cost", typeof(int));
dt.Columns.Add("typeRecord", typeof(string));
dt.Columns.Add("stImageInd", typeof(int));
dt.Columns.Add("expand", typeof(bool));
dt.Columns.Add("focus", typeof(bool));
try
{
adapter = new OleDbDataAdapter(cmd1);
cmdBuilder = new OleDbCommandBuilder(adapter);
adapter.UpdateCommand = cmdBuilder.GetUpdateCommand();
adapter.InsertCommand = cmdBuilder.GetInsertCommand();
}
catch (Exception ex)
{
string s = ex.Message;
throw;
}
adapter.Fill(dt);
dt.RowChanged += new DataRowChangeEventHandler(Row_Changed);
}
public void DataBinding()
{
// Чтобы отобразить поля "KeyFieldName" и "ParentFieldName"
// Свойство - PopulateServiceColumns = true
// Привязка к ключевым полям
treeList1This.KeyFieldName = "ID";
treeList1This.ParentFieldName = "PrID";
treeList1This.DataSource = dt;
// dataGridView1.DataSource = dt;
}
表单代码
private void Frm29UC_Load(object sender, EventArgs e)
{
treeList1.BestFitColumns(); // расширить поля
ExpandCurentNode(); // восстановление дерева после открытия
}
public void ExpandCurentNode() // Восстановление состояния после открытия дерева
{
var selectedDt = conectDB.dt.Select("expand = true"); // DataTable.Select
int i = selectedDt.Length;
foreach (var b in selectedDt)
{
string name = b["NodeName"].ToString();
TreeListNode node = treeList1.FindNodeByFieldValue("NodeName", name); // +- string s = node.GetValue("NodeName").ToString();
node.Expand();
ExpandParentNode(node);
}
}
确保调用ExpandCurentNode方法时TreeList已经完全初始化。为此,请在您的方法之前调用 TreeList.ForceInitialize 方法。
逻辑:
- 根据条件 "expand = true";
从数据 table 行中选择
- 执行行搜索;
- 根据字符串字段的值,我们在 "tray list".
方法 ExpandCurentNode()
行
TreeListNode node = treeList1.FindNodeByFieldValue("NodeName", name);
我们得到空值。
问题
为什么 FindNodeByFieldValue returns 为空?
描述
TreeList 填充方法 DataBinding()
.
属性 PopulateServiceColumns = true
.
连接码
public void connect()
{
string catBD = @"с:\db\db.01.accdb";
string conBD = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", catBD);
OleDbConnection connection = new OleDbConnection(conBD);
connection.Open();
string query1 = "SELECT * FROM TableTreeViewNoAi_12";
OleDbCommand cmd1 = new OleDbCommand(query1, connection);
dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns["ID"].AutoIncrement = true;
dt.Columns["ID"].AutoIncrementSeed = 44;
dt.Columns["ID"].AutoIncrementStep = 1;
dt.Columns.Add("PrID", typeof(int));
dt.Columns.Add("sorting", typeof(int));
dt.Columns.Add("NodeName", typeof(string));
dt.Columns.Add("Description", typeof(string));
dt.Columns.Add("Comment", typeof(string));
dt.Columns.Add("dateN", typeof(string));
dt.Columns.Add("Cost", typeof(int));
dt.Columns.Add("typeRecord", typeof(string));
dt.Columns.Add("stImageInd", typeof(int));
dt.Columns.Add("expand", typeof(bool));
dt.Columns.Add("focus", typeof(bool));
try
{
adapter = new OleDbDataAdapter(cmd1);
cmdBuilder = new OleDbCommandBuilder(adapter);
adapter.UpdateCommand = cmdBuilder.GetUpdateCommand();
adapter.InsertCommand = cmdBuilder.GetInsertCommand();
}
catch (Exception ex)
{
string s = ex.Message;
throw;
}
adapter.Fill(dt);
dt.RowChanged += new DataRowChangeEventHandler(Row_Changed);
}
public void DataBinding()
{
// Чтобы отобразить поля "KeyFieldName" и "ParentFieldName"
// Свойство - PopulateServiceColumns = true
// Привязка к ключевым полям
treeList1This.KeyFieldName = "ID";
treeList1This.ParentFieldName = "PrID";
treeList1This.DataSource = dt;
// dataGridView1.DataSource = dt;
}
表单代码
private void Frm29UC_Load(object sender, EventArgs e)
{
treeList1.BestFitColumns(); // расширить поля
ExpandCurentNode(); // восстановление дерева после открытия
}
public void ExpandCurentNode() // Восстановление состояния после открытия дерева
{
var selectedDt = conectDB.dt.Select("expand = true"); // DataTable.Select
int i = selectedDt.Length;
foreach (var b in selectedDt)
{
string name = b["NodeName"].ToString();
TreeListNode node = treeList1.FindNodeByFieldValue("NodeName", name); // +- string s = node.GetValue("NodeName").ToString();
node.Expand();
ExpandParentNode(node);
}
}
确保调用ExpandCurentNode方法时TreeList已经完全初始化。为此,请在您的方法之前调用 TreeList.ForceInitialize 方法。