日期:2014-05-19  浏览次数:20490 次

为什么DataSet受保护无法访问
public   class   menu   :   System.Web.UI.UserControl
{
DataSet   pDS;
private   void   Page_Load(object   sender,   System.EventArgs   e)
{
//   在此处放置用户代码以初始化页面
if(!this.IsPostBack)
{
WFunction   pFun   =   new   WFunction();
//加载所有菜单项
pDS =   pFun.list();
//以下代码在这里能正确执行
                                                                          foreach(DataRow   dr   in   pDS.Tables[0].Rows)
{
Response.Write   (dr[2].ToString());
}
}
}


}

把foreach(DataRow   dr   in   pDS.Tables[0].Rows)
{
Response.Write   (dr[2].ToString());
}
放到aspx中
<%
foreach(DataRow   dr   in   pDS.Tables[0].Rows)
{
Response.Write   (dr[2].ToString());
}
%>
总报这样的错误
编译错误  
说明:   在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。  

编译器错误信息:   CS0122:   不可访问“yilin.admin.menu.pDS”,因为它受保护级别限制

源错误:

 

行   9:         </tr>
行   10:       <%
行   11:       foreach(DataRow   dr   in   pDS.Tables[0].Rows)
行   12:   {
行   13:   Response.Write   (dr[2].ToString());
 

源文件:   http://localhost/yilin/admin/menu.ascx         行:   11

------解决方案--------------------
DataSet pDS;你声明的是个局部变量,当然不能用。
如果在aspx中引用,需要是proteced或public的成员变量。
------解决方案--------------------
既然提示了它受保护级别限制

为什么不用protected呢?

aspx页面实际上上继承与cs文件的
DataSet pDS;没加任何修饰就是默认private
所以页面当然不能访问

------解决方案--------------------
DataSet pDS;
改为: protected DataSet pDS;
不要动不动就去public