首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

当前上下文不存在ds,该如何处理

2012-03-27 
当前上下文不存在ds.aspx.cs页面中的代码如下:DataSet ds new DataSet()protected void Page_Load(obje

当前上下文不存在ds
.aspx.cs页面中的代码如下:

  DataSet ds = new DataSet(); 
   
  protected void Page_Load(object sender, EventArgs e)
  {
  //创建链接数据库
  SqlConnection con = DBConnection.creatConnection();
  con.Open();
  //定义查询语句
  string cmd = "select FunctionName,Content from GardenFunction";
  SqlDataAdapter sda = new SqlDataAdapter(cmd, con);
  sda.Fill(ds, "GardenFunction");
  con.Close();
  }
.aspx页面中的代码如下:
<table id="table11" border ="0" runat ="server">
  <tr>
  <td valign ="top" style="height: 18px">
  <%
  for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
  {
  Label[] lbl = new Label[10];
  lbl[i] = new Label();
  lbl[i].Text = ds.Tables[0].Rows[i]["FunctionName"].ToString() ;
  this.Page.Controls.Add(lbl[i]);
  }  
  %>
  </p> 
  </td>
  </tr>
  </table>
也就是想使用对象数组动态输出,可是总是出现“当前上下文不存在ds”的错误,我已经把ds定义成公共变量了啊,不知错在哪,最近总是遇到这种问题,很着急,请大家指教!

[解决办法]
把ds声明为public的
[解决办法]
把ds声明为public的
[解决办法]
public DataSet ds = new DataSet();
[解决办法]

C# code
//DataSet ds = new DataSet();  //默认是privatepublic DataSet ds = new DataSet();
[解决办法]
LS的回答正确了,不过建议LZ不要这样写,<table id="table11" border ="0" runat ="server"> 
<tr> 
<td valign ="top" style="height: 18px"> 
<% 
for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 

Label[] lbl = new Label[10]; 
lbl[i] = new Label(); 
lbl[i].Text = ds.Tables[0].Rows[i]["FunctionName"].ToString() ; 
this.Page.Controls.Add(lbl[i]); 
}
%> 
</p>
</td> 
</tr> 
</table> 
-----------------------------------------------------------
这段我觉得改为
<table id="table11" border ="0"
<tr> 
<td valign ="top" style="height: 18px" runat ="server"> id="td1"> 

</td> 
</tr> 
</table> 



后台用StringBuilder来构造下面这段,然后用td1.InnerHTML = "";这样方式比较好
for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 

Label[] lbl = new Label[10]; 
lbl[i] = new Label(); 
lbl[i].Text = ds.Tables[0].Rows[i]["FunctionName"].ToString() ; 
this.Page.Controls.Add(lbl[i]); 
}

------解决方案--------------------


td1.InnerHTML = "";的时候做一个循环,把数据都读进去,怎么会覆盖呢
[解决办法]

探讨
我是这样写的: 
for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 

System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
sb.Append(ds.Tables[0].Rows[i]["Content"].ToString()); 
td1.InnerHtml = sb.ToString(); 

运行之后只能显示最后一条数据,之前的都不能显示,是哪错了?

[解决办法]
在asp.net中有一个名词叫 Codebehind 

应该屏弃 <% %> 这种asp 中的写法


在.aspx页 访问 .cs 中的成员,需要该成员的访问级别在protected或以上级别

热点排行