当前上下文不存在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 = "";的时候做一个循环,把数据都读进去,怎么会覆盖呢
[解决办法]
[解决办法]
在asp.net中有一个名词叫 Codebehind
应该屏弃 <% %> 这种asp 中的写法
在.aspx页 访问 .cs 中的成员,需要该成员的访问级别在protected或以上级别