protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeView TreeView1 = new TreeView();
showtreeintreeview(0, TreeView1.Nodes);//这里出错:错误 2 参数“2”: 无法从“System.Web.UI.WebControls.TreeNodeCollection”转换为“System.Web.UI.WebControls.TreeNode”
} private void showtreeintreeview(int id, TreeNode node)
{
OracleConnection myConnection = new OracleConnection(Page_SQL_CONN_Entity);
myConnection.Open();
string MySelectSQL = "select * from sys_action_column where action_column_name=:Temp_query";
//OracleCommand MyCmd = new OracleCommand(MySelectSQL, myConnection);
//MyCmd.Parameters.Add(":Temp_query", OracleType.VarChar, 20).Value = query;
OracleDataAdapter adapter = new OracleDataAdapter(MySelectSQL, myConnection); DataSet ds = new DataSet(); adapter.Fill(ds);
DataView dv = ds.Tables[0].DefaultView;
dv.RowFilter = "action_column_id=" + id.ToString(); //父节点和子节点的连接,用过滤的方式
TreeNode item;
foreach (DataRowView dr in dv)
{
if (node == null)
{
item = new TreeNode();
item.Text = dr["action_column_name"].ToString();//节点的内容,
//item.NavigateUrl=dr["url"].ToString();//节点的连接
TreeView1.Nodes.Add(item);
showtreeintreeview(Convert.ToInt32(dr["action_column_id"]), item); //一个递归循环,
}
else
{
item = new TreeNode();
item.Text = dr["action_name"].ToString();
node.ChildNodes.Add(item);
showtreeintreeview(Convert.ToInt32(dr["id"]), item);
//item.NavigateUrl=dr["url"].ToString();
}
}
}我想问一下,TreeView绑定到oracle数据库到底是怎么做的,网上资源都好少啊。
{
if (!IsPostBack)
{
TreeView TreeView1 = new TreeView();
showtreeintreeview(0, TreeView1.Nodes);//这里出错:错误 2 参数“2”: 无法从“System.Web.UI.WebControls.TreeNodeCollection”转换为“System.Web.UI.WebControls.TreeNode”
} private void showtreeintreeview(int id, TreeNode node)
{
OracleConnection myConnection = new OracleConnection(Page_SQL_CONN_Entity);
myConnection.Open();
string MySelectSQL = "select * from sys_action_column where action_column_name=:Temp_query";
//OracleCommand MyCmd = new OracleCommand(MySelectSQL, myConnection);
//MyCmd.Parameters.Add(":Temp_query", OracleType.VarChar, 20).Value = query;
OracleDataAdapter adapter = new OracleDataAdapter(MySelectSQL, myConnection); DataSet ds = new DataSet(); adapter.Fill(ds);
DataView dv = ds.Tables[0].DefaultView;
dv.RowFilter = "action_column_id=" + id.ToString(); //父节点和子节点的连接,用过滤的方式
TreeNode item;
foreach (DataRowView dr in dv)
{
if (node == null)
{
item = new TreeNode();
item.Text = dr["action_column_name"].ToString();//节点的内容,
//item.NavigateUrl=dr["url"].ToString();//节点的连接
TreeView1.Nodes.Add(item);
showtreeintreeview(Convert.ToInt32(dr["action_column_id"]), item); //一个递归循环,
}
else
{
item = new TreeNode();
item.Text = dr["action_name"].ToString();
node.ChildNodes.Add(item);
showtreeintreeview(Convert.ToInt32(dr["id"]), item);
//item.NavigateUrl=dr["url"].ToString();
}
}
}我想问一下,TreeView绑定到oracle数据库到底是怎么做的,网上资源都好少啊。
解决方案 »
- JQUERY 表单提交的一个小问题
- 求判断是否有返回结果的语句
- 供货商的价格竞争机制——希望有经验的人提供资料文献
- web控件checkbox CheckedChanged 事件问题
- 有几个疑惑,想咨询一下
- --- 在.NET(c#)中,怎样实现点浏览选路径,最终返回的是一个文件夹路径而非带文件的路径
- DataRow数组如何高效率绑定到DataGrid
- 没分了...厚着脸皮请各位帮个忙~
- 求大侠帮助,Sql Server2005,用.能连上,而.\SQLEXPRESS确连不上
- 关于IMAGE/TEXT的问题
- asp.net中使用access数据源时出现至少一个参数没有被指定值的错误
- 关于AJAX包中自带的闹钟问题
TreeNode root = new TreeNode();
root.Text = "Root";
root.Value = "root";
TreeView1.Nodes.Add(root);showtreeintreeview(0, root);以上只是例子,实际需要可能需要更改部分代码
我试一下啦
TreeView控件的 这个是.net2005环境下的 2003也能用 menuInfo 和menuOp是我自定义的类 不用理它
/// <summary>
/// 初始化左栏列表树
/// </summary>
protected void InitMenuTree()
{
//选取模块列表
MenuInfo mi = new MenuInfo();
MenuOp mo = new MenuOp();
mi.ParentId = -1;
DataTable dt = mo.SelectMenu(mi);
if (dt == null || dt.Rows.Count == 0) return;
tvMenu.ShowExpandCollapse = true;
tvMenu.ShowLines = false;
tvMenu.CollapseImageUrl = virRoot + "/Images/012.png";
tvMenu.ExpandImageUrl = virRoot + "/Images/013.png";
tvMenu.NoExpandImageUrl = virRoot + "/Images/014.png";
for (int i = 0; i < dt.Rows.Count; i++)
{
TreeNode tn = new TreeNode();
tn.Text = dt.Rows[i][MenuInfo.Fields.MenuName] == null ? "" : dt.Rows[i][MenuInfo.Fields.MenuName].ToString();
tn.Value = dt.Rows[i][MenuInfo.Fields.MenuId].ToString();
tn.NavigateUrl = virRoot + (dt.Rows[i][MenuInfo.Fields.FrmUrl] == null ? "" : dt.Rows[i][MenuInfo.Fields.FrmUrl].ToString());
//tn.ImageUrl = virRoot + "/images/bb.gif";
tn.Target = "frmMain";
tn.PopulateOnDemand = true;
tn.Expand();
tvMenu.Nodes.Add(tn);
InitChildNodes(tn, 1);
}
}
/// <summary>
/// 递归添加节点
/// </summary>
/// <param name="t">节点实例</param>
/// <param name="expandLevel">节点展开的级数</param>
protected void InitChildNodes(TreeNode t,int expandLevel)
{
MenuInfo mi = new MenuInfo();
MenuOp mo = new MenuOp();
mi.ParentId = int.Parse(t.Value);
DataTable dt = mo.SelectMenu(mi);
if (dt == null || dt.Rows.Count == 0) return;
for (int i = 0; i < dt.Rows.Count; i++)
{
TreeNode tn = new TreeNode();
tn.Text = dt.Rows[i][MenuInfo.Fields.MenuName] == null ? "" : dt.Rows[i][MenuInfo.Fields.MenuName].ToString();
tn.Value = dt.Rows[i][MenuInfo.Fields.MenuId].ToString();
tn.NavigateUrl = virRoot + (dt.Rows[i][MenuInfo.Fields.FrmUrl] == null ? "" : dt.Rows[i][MenuInfo.Fields.FrmUrl].ToString());
//tn.ImageUrl = virRoot + "/images/bb.gif";
tn.Target = "frmMain";
tn.PopulateOnDemand = true;
if (--expandLevel > 0){tn.Expand();}else{tn.Collapse();}
t.PopulateOnDemand = false;
t.SelectAction = TreeNodeSelectAction.SelectExpand;
t.ChildNodes.Add(tn);
InitChildNodes(tn, expandLevel);
}
return;
}
这是一个集合,不是一个值.
哦 还有表结构很重要 构成数据的从属关系
CREATE TABLE [dbo].[Menu] (
[MenuID] [int] IDENTITY (1, 1) NOT NULL ,
[parentId] [int] NULL ,
[MenuName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[FrmName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[FrmUrl] [nvarchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[Ztsx] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[MenuOrder] [int] NULL ,
[Pic] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[del] [bit] NULL ,
[addTime] [datetime] NULL
) ON [PRIMARY]
很简单的二级树,一排父节点,各有一排子节点 简单结构显示如下:
000
001
002
111
101
102
222
201
202 数据库中两个表的结构基本和上面的一致 我改成简单的吧
表1
id c_name f_name_id(与表2相映射) view_mode(使其可见或不可见) 表2
f_name_id f_name
但数据库是oracle的,这方面有难度啊,网上见的少,所以请大虾帮忙了。