C# 该方法采用字符串,并且必须返回列表或树
我创建了一个方法并向其中添加了一个参数以插入到查询中。调用此方法时,我应该构建一个树 错误参数1:无法从“CodersLab.Windows.Controls.TreeView”转换为“string”C# 该方法采用字符串,并且必须返回列表或树,c#,sql,sql-server,C#,Sql,Sql Server,我创建了一个方法并向其中添加了一个参数以插入到查询中。调用此方法时,我应该构建一个树 错误参数1:无法从“CodersLab.Windows.Controls.TreeView”转换为“string” public List GetHTInfoTable(字符串o) { TreeNode树=新的TreeNode(); //tree.BeginUpdate(); //tree.Nodes.Clear(); 列表结果=新列表(); 使用(SqlCommand comm=newsqlcommand(@
public List GetHTInfoTable(字符串o)
{
TreeNode树=新的TreeNode();
//tree.BeginUpdate();
//tree.Nodes.Clear();
列表结果=新列表();
使用(SqlCommand comm=newsqlcommand(@“从[HT].[dbo].[tat]a[HT].[dbo].[HT]b中选择a.wro、b.name、a.status,其中b.id=a.id_表和[o]='{o}',Connect))
{
// Проходим ридером
使用(SqlDataReader=comm.ExecuteReader())
{
if(!reader.HasRows)返回结果;
var状态=新树节点(“+++”);
while(reader.Read())
{
var HT=新状态信息();
HT.O=Convert.ToString(reader.GetValue(0));
HT.US=Convert.ToString(reader.GetValue(2));
HT.T=reader.GetString(1);
TreeNode statusTree=新的TreeNode();
statusTree.Nodes.Add(HT.US);
Status.Nodes.Add(statusTree);
TreeNode tableTree=新的TreeNode();
tableTree.Nodes.Add(HT.Table);
statusTree.Nodes.Add(tableTree);
tree.Nodes.Add(状态);
}
}
返回结果;
}
私人电视(O)
{
StatusTree.BeginUpdate();
StatusTree.SelectedNodes.Clear();
StatusTree.Nodes.Clear();
List ht=新列表();
尝试
{
MSSDB=新的MSSQLSDB(Settings.MSSQL_地址、Settings.MSSQL_数据库名、Settings.MSSQL_登录、Settings.MSSQL_密码);
MSSDB.Open();
ht=MSSDB.GetHTInfoTable(StatusTree);
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
Application.Exit();
}
StatusTree.EndUpdate();
}
嗯,似乎您传递的是TreeView
类型的对象,而不是string
。因此异常不是因为代码段中的第一个函数,而是因为它的调用者refreshttv(O)
。您希望在这里发生什么:ht=MSSDB.GetHTInfoTable(StatusTree)
?事实上是相反的,他应该传递一个树视图而不是字符串。@Glenvanacker无论如何,因为结果从来没有被添加到,这将总是返回一个空列表……这是一个事实,我感觉到另一个问题出现了:D,因为它与这个问题无关
public List<StatusInfo> GetHTInfoTable(string o)
{
TreeNode tree = new TreeNode();
//tree.BeginUpdate();
//tree.Nodes.Clear();
List<StatusInfo> result = new List<StatusInfo>();
using (SqlCommand comm = new SqlCommand(@"select a.wro, b.name, a.status from [HT].[dbo].[tat] a, [HT].[dbo].[HT] b where b.id = a.id_table and [o]='{o}'", Connect))
{
// Проходим ридером
using (SqlDataReader reader = comm.ExecuteReader())
{
if (!reader.HasRows) return result;
var Status = new TreeNode("+++");
while (reader.Read())
{
var HT = new StatusInfo();
HT.O = Convert.ToString(reader.GetValue(0));
HT.US = Convert.ToString(reader.GetValue(2));
HT.T= reader.GetString(1);
TreeNode statusTree = new TreeNode();
statusTree.Nodes.Add(HT.US);
Status.Nodes.Add(statusTree);
TreeNode tableTree = new TreeNode();
tableTree.Nodes.Add(HT.Table);
statusTree.Nodes.Add(tableTree);
tree.Nodes.Add(Status);
}
}
return result;
}
private void RefreshTV(O o)
{
StatusTree.BeginUpdate();
StatusTree.SelectedNodes.Clear();
StatusTree.Nodes.Clear();
List<StatusInfo> ht = new List<StatusInfo>();
try
{
MSSDB = new MSSqlDB(Settings.MSSQL_Address, Settings.MSSQL_DBName, Settings.MSSQL_Login, Settings.MSSQL_Password);
MSSDB.Open();
ht = MSSDB.GetHTInfoTable(StatusTree);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
Application.Exit();
}
StatusTree.EndUpdate();
}