一张表如下(表中关联,以各自的ID来取关联值):
1 0 生活用品
2 1 茶杯
3 0 体育用品
4 3 足球
5 1 牙膏
6 1 牙刷
7 2 铁杯我想它在DropDownList的下拉菜单中显示出来的条目是:
生活用品/茶杯/铁杯
生活用品/牙膏
生活用品/牙刷我的代码如下:
DSN=ConfigurationSettings.AppSettings["dsn"];
conn=new SqlConnection(DSN);
conn.Open();
//ArrayList ProductLitId=new ArrayList();//取得小类的id值
ArrayList ProductSmall=new ArrayList();
string ProductList="";
string ProductSmallRead="";
//ArrayList al=new ArrayList();
if(!IsPostBack)
{
//--------------------取大类id对应的类别名称---------------------- string ProductBigRead="select * from ccfl where id='"+Request.QueryString["id"]+"'";
SqlCommand comm=new SqlCommand(ProductBigRead,conn);
SqlDataReader dr=comm.ExecuteReader();
if(dr.Read())
{
string ProductBigList=dr["lbmc"].ToString();
Session["lbmc"]=ProductBigList;
}
dr.Close(); //--------------------取大类对应的id的小类类别名称------------- string ProductLitRead="select * from ccfl where lb_id='"+Request.QueryString["id"]+"'";
SqlCommand com=new SqlCommand(ProductLitRead,conn);
SqlDataReader sdr=com.ExecuteReader();
while(sdr.Read())
{
string ProductLitList=sdr["lbmc"].ToString();
ProductList=Session["lbmc"]+"/"+ProductLitList;
ProductSmallRead="select * from ccfl where lb_id='"+sdr["id"]+"'";
SqlCommand co=new SqlCommand(ProductSmallRead,conn);
SqlDataReader sdrr=co.ExecuteReader();
ProductSmall.Add(ProductList);
while(sdrr.Read())
{
ProductList+="/"+sdrr["lbmc"].ToString();
ProductSmall.Add(ProductList);
}
sdrr.Close();
//ProductLitId.Add(sdr["id"].ToString());
ProductSmall.Add(ProductList);
}出现的错误,本人知道哪里错,就是不知道如何去解决,第一个DataReader不能关闭:
已有打开的与此连接相关联的 DataReader,必须首先将它关闭。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 已有打开的与此连接相关联的 DataReader,必须首先将它关闭。源错误:
行 71: ProductSmallRead="select * from ccfl where lb_id='"+sdr["id"]+"'";
行 72: SqlCommand co=new SqlCommand(ProductSmallRead,conn);
行 73: SqlDataReader sdrr=co.ExecuteReader();
行 74: ProductSmall.Add(ProductList);
行 75: while(sdrr.Read())
sdr.Close(); //--------------------取得小类对应的id的子类类别名称----------------- }
}
//-------------------------绑定DropDownList的值---------------------
Dp_spfl.DataSource=ProductSmall;
Dp_spfl.DataBind();
}
1 0 生活用品
2 1 茶杯
3 0 体育用品
4 3 足球
5 1 牙膏
6 1 牙刷
7 2 铁杯我想它在DropDownList的下拉菜单中显示出来的条目是:
生活用品/茶杯/铁杯
生活用品/牙膏
生活用品/牙刷我的代码如下:
DSN=ConfigurationSettings.AppSettings["dsn"];
conn=new SqlConnection(DSN);
conn.Open();
//ArrayList ProductLitId=new ArrayList();//取得小类的id值
ArrayList ProductSmall=new ArrayList();
string ProductList="";
string ProductSmallRead="";
//ArrayList al=new ArrayList();
if(!IsPostBack)
{
//--------------------取大类id对应的类别名称---------------------- string ProductBigRead="select * from ccfl where id='"+Request.QueryString["id"]+"'";
SqlCommand comm=new SqlCommand(ProductBigRead,conn);
SqlDataReader dr=comm.ExecuteReader();
if(dr.Read())
{
string ProductBigList=dr["lbmc"].ToString();
Session["lbmc"]=ProductBigList;
}
dr.Close(); //--------------------取大类对应的id的小类类别名称------------- string ProductLitRead="select * from ccfl where lb_id='"+Request.QueryString["id"]+"'";
SqlCommand com=new SqlCommand(ProductLitRead,conn);
SqlDataReader sdr=com.ExecuteReader();
while(sdr.Read())
{
string ProductLitList=sdr["lbmc"].ToString();
ProductList=Session["lbmc"]+"/"+ProductLitList;
ProductSmallRead="select * from ccfl where lb_id='"+sdr["id"]+"'";
SqlCommand co=new SqlCommand(ProductSmallRead,conn);
SqlDataReader sdrr=co.ExecuteReader();
ProductSmall.Add(ProductList);
while(sdrr.Read())
{
ProductList+="/"+sdrr["lbmc"].ToString();
ProductSmall.Add(ProductList);
}
sdrr.Close();
//ProductLitId.Add(sdr["id"].ToString());
ProductSmall.Add(ProductList);
}出现的错误,本人知道哪里错,就是不知道如何去解决,第一个DataReader不能关闭:
已有打开的与此连接相关联的 DataReader,必须首先将它关闭。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 已有打开的与此连接相关联的 DataReader,必须首先将它关闭。源错误:
行 71: ProductSmallRead="select * from ccfl where lb_id='"+sdr["id"]+"'";
行 72: SqlCommand co=new SqlCommand(ProductSmallRead,conn);
行 73: SqlDataReader sdrr=co.ExecuteReader();
行 74: ProductSmall.Add(ProductList);
行 75: while(sdrr.Read())
sdr.Close(); //--------------------取得小类对应的id的子类类别名称----------------- }
}
//-------------------------绑定DropDownList的值---------------------
Dp_spfl.DataSource=ProductSmall;
Dp_spfl.DataBind();
}
解决方案 »
- .net 获取存储过程信息
- 一百万以上的文本数据如何快速的导入到SQL Server?
- 基于角色的访问控制,角色权限的分配
- css滤镜如何通过js加和控制多个滤镜效果。
- asp.net中关于dropdownlist下拉空选项的问题
- 哪位仁兄推荐一本专门讲述.net架构方面的书。最好看完后对成为系统架构师有所帮助
- 站点间功能权限问题
- select有挑战性的问题。谢谢!
- #################满分求高手#############################满分求高手满分求高手满分求高手满分求高手满分求高手满分求高手满分求高手满
- 在PETSHOP中,关于用户验证的问题?
- 想创业:遇到一个抽象问题======>>>>我想用ADSL上网,电脑的配置大概花一万多作为服务器,然后用花生壳动态绑定域名.请问别人访问我的网站速
- 点后浏览器的后退按扭,怎么能不让它不保持先原页面的状态,而是重新刷新页面?给出解决思路100重谢
前加入sdr.Close();
left join (select * from table1 ) t2 on t2.id=t1.parentid
left join (select * from table1 ) t3 on t3.id=t2.parentid
.....
如果层次无限大,则可以写一个存储过程
<%@ page language="vb"%>
<%@ register tagprefix="romantic" namespace="fw" assembly="admin_net"%>
<html>
<head>
<style>
body{font-size:9pt;margin-top=3px;margin-left:2px;margin-right:2px;margin-bottom:3px}
table{font-size:9pt}
a:link{text-decoration:none;color:#000000}
a:hover{text-decoration:underline;color:red}
a:active{text-decoration:underline;color:red}
a:visited{text-decoration:none}
body{scrollbar-face-color:#99EFCF;scrollbar-track-color:#D5FDEE;scrollbar-arrow-color:red;scrollbar-shadow-color:#FFFBE1}
</style>
<script language="vb" runat="server">
sub page_load(sender as object, e as eventargs)
if not ispostback then
bind(0)
end if
end sub
sub bind(byval parentid as integer)
dim fw as new admin_net
dim i as integer
dim dv as new dataview
dv=fw.bind
dv.rowfilter="parentid = " + parentid.tostring
Dim Row As DataRowView
For Each Row In dv
dim j as integer
dim stemp as string=""
for j=1 to cint(row("layer"))
stemp=stemp & " "
next
dim theimage as string
if cint(row("child"))=0 then
theimage="<img src=new/minus.gif>"
else
theimage="<img src=new/plus.gif>"
end if
label1.text=label1.text & "<tr bgcolor=#ffffff><td>" & stemp & theimage & "<b>" & row("boardname") & " (" & row("child") & ")</b>" & " <b>[ </b><font color=red>版面</font>:<a href=net_updateboard.aspx?boardid=" & row("boardid") & "&parentstr=" & row("parentstr") & "&child=" & row("child") & ">修改</a> | <a href=net_deleteboard.aspx?boardid=" & row("boardid") & "&parentstr=" & row("parentstr") & "&child=" & row("child") & ">删除</a> | <a href=net_addboard.aspx?boardid=" & row("boardid") & "&parentstr=" & row("parentstr") & "&child=" & row("child") & ">添加</a> | <a href=net_advance.aspx?boardid=" & row("boardid") & "&parentstr=" & row("parentstr") & "&child=" & row("child") & ">高级</a> <b> ]</b> <b>[ </b><font color=red>数据</font>:<a href=net_add.aspx?boardid=" & row("boardid") & ">添加</a> | <a href=tec_admin.aspx?boardid=" & row("boardid") & ">管理</a> | <a href=tec_delete.aspx?boardid=" & row("boardid") & ">删除</a> | <a href=tec_clear.aspx?boardid=" & row("boardid") & ">清空</a><b> ]</b></td>"
bind(Int32.Parse(Row("boardid").ToString()))
Next
dv=nothing
end sub
</script>
</head>
<body>
<form runat="server"><table width=100% cellpadding=4 cellspacing=1 bgcolor=#aab7b7>
<tr><th background="new/tiao1.jpg" height=27>版面管理</th><asp:label id=label1 runat="server"/></table>
<br></form>
</body>
</html>
---------------------------------------------------------------option explicit
option strict
imports system
imports system.web
imports system.data
imports system.data.oledb
imports system.xml
imports Microsoft.visualbasic
Imports System.Web.UI
Imports System.Web.UI.webcontrols
namespace fw
public class admin_net
inherits page
public function bind as dataview
on error goto err11
dim strcnn as string=system.configuration.configurationsettings.appsettings("strcnn")
dim cnn as oledbconnection
dim cmd as oledbdataadapter
dim ds as new dataset
cnn=new oledbconnection(strcnn)
cnn.open()
dim strsql as string="select boardname,boardid,parentid,layer,child,parentstr from net"
cmd=new oledbdataadapter(strsql,cnn)
cmd.fill(ds,"tables1")
bind=ds.tables("tables1").defaultview
cnn.close()
cnn=nothing
exit function
err11:
end function
end class
end namespace