求一算法思路(生成树) 根据SParentId向上查找,直至该字段值为0.建议可以将分类改为字符串,以"1|2|"的形式存储.这样比较容易查询 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /// <summary>创建树的根目录 /// 创建树的根目录 /// </summary> /// <param name="as_GroupName"></param> private void of_CreateTreeView(string as_GroupName,System.Web.UI.WebControls.TreeView atv_1) { string ls_TreeSql = "select FunctionName,CallPage,ListIcon from oa_FunctionList where GroupName = '" + as_GroupName + "' order by FunctionId"; string ls_FunctionName, ls_CallPage, ls_ListIcon; DataTable ldt_DataTable1; DataRow[] ldr_DataRow1; DataAccess da_Function = new DataAccess(); ldt_DataTable1 = da_Function.FillData(ls_TreeSql); if (ldt_DataTable1.Rows.Count > 0) { ldr_DataRow1 = ldt_DataTable1.Select(); foreach (DataRow ldr1 in ldr_DataRow1) { TreeNode ltv_Root = new TreeNode(); ls_FunctionName = ldr1["FunctionName"].ToString(); ls_CallPage = ldr1["CallPage"].ToString(); ls_ListIcon = ldr1["ListIcon"].ToString(); ltv_Root.Text = ls_FunctionName; ltv_Root.Value = ls_FunctionName; ltv_Root.ImageUrl = "../images/" + ls_ListIcon; ltv_Root.Expanded = false; if (!(ls_CallPage == "" || ls_CallPage == null)) { ltv_Root.Target = "mainFrame"; ltv_Root.NavigateUrl = ls_CallPage; } else { ltv_Root.SelectAction = TreeNodeSelectAction.Expand; } atv_1.Nodes.Add(ltv_Root); of_CreateTreeView1(ls_FunctionName, ltv_Root); } } } /// <summary>递归创建树 /// 递归创建树 /// </summary> /// <param name="as_GroupName"></param> /// <param name="tn_TreeNode1"></param> private void of_CreateTreeView1(string as_GroupName, TreeNode tn_TreeNode1) { string ls_TreeSql = "select FunctionName,CallPage,ListIcon from oa_FunctionList where GroupName = '" + as_GroupName + "' order by FunctionId"; string ls_FunctionName, ls_CallPage, ls_ListIcon; DataTable ldt_DataTable1; DataRow[] ldr_DataRow1; DataAccess da_Function = new DataAccess(); ldt_DataTable1 = da_Function.FillData(ls_TreeSql); if (ldt_DataTable1.Rows.Count > 0) { ldr_DataRow1 = ldt_DataTable1.Select(); foreach (DataRow ldr1 in ldr_DataRow1) { TreeNode ltv_Root = new TreeNode(); ls_FunctionName = ldr1["FunctionName"].ToString(); ls_CallPage = ldr1["CallPage"].ToString(); ls_ListIcon = ldr1["ListIcon"].ToString(); ltv_Root.Text = ls_FunctionName; ltv_Root.Value = ls_FunctionName; ltv_Root.ImageUrl = "../images/" + ls_ListIcon; if (!(ls_CallPage == "" || ls_CallPage == null)) { ltv_Root.Target = "mainFrame"; ltv_Root.NavigateUrl = ls_CallPage; } else { ltv_Root.SelectAction = TreeNodeSelectAction.Expand; } tn_TreeNode1.ChildNodes.Add(ltv_Root); of_CreateTreeView1(ls_FunctionName, ltv_Root); } } } C#中virtual 和abstract用在方法前面有什么不同? 5322/26.81.12.31.00.01转换成5322268112310001 内码转换成汉字 关于串口读写的问题。 关于判断鼠标是否在某一区域 问一个范型编程中的继承问题 请问c#.net B/S程序怎么打包?是不是跟Winform程序一样的打包方法呢? C# 从子线程中调用主线程的窗体 疑惑 StringBuilder. AppendFormat在网页上的格式输出 用gdi+绘图时,数值很大时比如10e10,为什么会出错? 请教关于异常的问题 几天没上了,论坛换了个QQ装。今天我登录的校验码是:88888
/// 创建树的根目录
/// </summary>
/// <param name="as_GroupName"></param>
private void of_CreateTreeView(string as_GroupName,System.Web.UI.WebControls.TreeView atv_1)
{
string ls_TreeSql = "select FunctionName,CallPage,ListIcon from oa_FunctionList where GroupName = '" + as_GroupName + "' order by FunctionId";
string ls_FunctionName, ls_CallPage, ls_ListIcon;
DataTable ldt_DataTable1;
DataRow[] ldr_DataRow1;
DataAccess da_Function = new DataAccess();
ldt_DataTable1 = da_Function.FillData(ls_TreeSql);
if (ldt_DataTable1.Rows.Count > 0)
{
ldr_DataRow1 = ldt_DataTable1.Select();
foreach (DataRow ldr1 in ldr_DataRow1)
{
TreeNode ltv_Root = new TreeNode();
ls_FunctionName = ldr1["FunctionName"].ToString();
ls_CallPage = ldr1["CallPage"].ToString();
ls_ListIcon = ldr1["ListIcon"].ToString();
ltv_Root.Text = ls_FunctionName;
ltv_Root.Value = ls_FunctionName;
ltv_Root.ImageUrl = "../images/" + ls_ListIcon;
ltv_Root.Expanded = false;
if (!(ls_CallPage == "" || ls_CallPage == null))
{
ltv_Root.Target = "mainFrame";
ltv_Root.NavigateUrl = ls_CallPage;
}
else
{
ltv_Root.SelectAction = TreeNodeSelectAction.Expand;
}
atv_1.Nodes.Add(ltv_Root);
of_CreateTreeView1(ls_FunctionName, ltv_Root);
}
}
}
/// <summary>递归创建树
/// 递归创建树
/// </summary>
/// <param name="as_GroupName"></param>
/// <param name="tn_TreeNode1"></param>
private void of_CreateTreeView1(string as_GroupName, TreeNode tn_TreeNode1)
{
string ls_TreeSql = "select FunctionName,CallPage,ListIcon from oa_FunctionList where GroupName = '" + as_GroupName + "' order by FunctionId";
string ls_FunctionName, ls_CallPage, ls_ListIcon;
DataTable ldt_DataTable1;
DataRow[] ldr_DataRow1;
DataAccess da_Function = new DataAccess();
ldt_DataTable1 = da_Function.FillData(ls_TreeSql);
if (ldt_DataTable1.Rows.Count > 0)
{
ldr_DataRow1 = ldt_DataTable1.Select();
foreach (DataRow ldr1 in ldr_DataRow1)
{
TreeNode ltv_Root = new TreeNode();
ls_FunctionName = ldr1["FunctionName"].ToString();
ls_CallPage = ldr1["CallPage"].ToString();
ls_ListIcon = ldr1["ListIcon"].ToString();
ltv_Root.Text = ls_FunctionName;
ltv_Root.Value = ls_FunctionName;
ltv_Root.ImageUrl = "../images/" + ls_ListIcon;
if (!(ls_CallPage == "" || ls_CallPage == null))
{
ltv_Root.Target = "mainFrame";
ltv_Root.NavigateUrl = ls_CallPage;
}
else
{
ltv_Root.SelectAction = TreeNodeSelectAction.Expand;
}
tn_TreeNode1.ChildNodes.Add(ltv_Root);
of_CreateTreeView1(ls_FunctionName, ltv_Root);
}
}
}