关于SqlDataReader的问题?请高手指点

panwy 2003-08-20 01:53:45
SqlDataReader怎么写递归?
...全文
44 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
steveson 2003-08-20
  • 打赏
  • 举报
回复
一种递归构造树的方法供参考。
其中,dtOrgTree中应存放要构造树的节点的所有记录。
"cparent_id"存放的是节点的父节点的ID
"cchild_id"存放的是节点的ID
"cchild_name"存放的是节点的名称,将被显示到树节点上。

public void CreateNodesOfParent(string iParent,
Microsoft.Web.UI.WebControls.TreeNode pNode)
{
DataView dvwData = new DataView( dtOrgTree,
"" , "cparent_id", DataViewRowState.CurrentRows );
DataRowView[] foundRows = dvwData.FindRows( iParent );

foreach(DataRowView Row in foundRows)
{
DataTable dt = new DataTable();
if(pNode == null)
{
TreeNode newNode = new TreeNode();

newNode.Text = Row["cchild_name"].ToString();
newNode.NodeData = Row["cchild_id"].ToString();

string org="_ROOT_";//表示根的ID
if(iParent=="_ROOT_") org = this.orgCode;

TrvOrg.Nodes.Add( newNode );
CreateNodesOfParent( Row["cchild_id"].ToString() ,newNode);
}
else
{
TreeNode newNode = new TreeNode();
newNode.Text = Row["cchild_name"].ToString();
newNode.NodeData = Row["cchild_id"].ToString();

pNode.Nodes.Add( newNode );
CreateNodesOfParent( Row["cchild_id"].ToString() ,newNode);
}
}
}
panwy 2003-08-20
  • 打赏
  • 举报
回复
asp代码如下:

能改成c#吗?

<%
Response.Write session("operatorID")
set DbCommand=server.CreateObject("ADODB.Command")
DbCommand.ActiveConnection=DbConn
DbCommand.CommandType=adCmdStoredProc
DbCommand.CommandText="sp_Functions_SelByStaffID" '读取角色成员列表的存储过程
DbCommand.Parameters.Refresh
DbCommand("@StaffID")=session("operatorID")
set rs=server.CreateObject("ADODB.Recordset")
rs.CursorLocation=3
rs.CursorType=3
rs.Open DbCommand
operFunStr="|"
do while not rs.EOF
operFunStr=operFunStr&rs("FunID")&"|"
rs.MoveNext
loop

DbCommand.CommandText="sp_Functions_SelByParentID" '读取角色列表的存储过程
DbCommand.Parameters.Refresh()
DbCommand("@ParentID")=0
set rs1=server.CreateObject("ADODB.Recordset")
rs1.CursorLocation=3
rs1.CursorType=3
rs1.Open DbCommand
set rs2=server.CreateObject("ADODB.Recordset")
i=1
do while not rs1.EOF
GroupText="OutBarFolder"&i&"=new Array("""&rs1("funName")&""""
isUse=0
DbCommand("@ParentID")=rs1("funID")
rs2.Open DbCommand
do while not rs2.EOF
if instr(1,operFunStr,"|"&rs2("funID")&"|")>0 then
if isUse=0 then
Response.Write GroupText
isUse=1
i=i+1
end if
if instr(1,rs2("FunName"),"(")>0 then
funName=mid(rs2("funName"),1,instr(1,rs2("FunName"),"(")-1)
else
funName=rs2("funName")
end if
Response.Write ","""&rs2("ImageURL")&""","""&funName&""","""&rs2("FunURL")&""",""parent.right"""&chr(13)
end if
rs2.MoveNext
loop
if isUse=1 then
Response.Write");"&chr(13)
end if
rs2.Close
rs1.MoveNext
loop
%>
johnlenfu 2003-08-20
  • 打赏
  • 举报
回复
把你的代码贴出来看看,递归是指函数调用自身吧,不明白你的意思。
panwy 2003-08-20
  • 打赏
  • 举报
回复
就是循环中还有循环,我都快疯了,请指点!
steveson 2003-08-20
  • 打赏
  • 举报
回复
是否想构造一颗树之类的东西?
steveson 2003-08-20
  • 打赏
  • 举报
回复
不能用别的方式实现吗?
lwgj 2003-08-20
  • 打赏
  • 举报
回复
递归???
edobnet 2003-08-20
  • 打赏
  • 举报
回复
只能向前读,你是什么意思啊

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧