0

我正在 VS2008 中编写一个 ASP.NET 2.0 页面。在我的 Page_Load 方法中,我有以下内容:

DataTable table = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter();

using (SqlConnection connection = new SqlConnection(conString)) {
    using (SqlCommand command = new SqlCommand(cmdString, connection)) {
        adapter.SelectCommand = command;
        rowCount = adapter.Fill(table);
    }
}

我做错了什么?

我第一次执行页面时,它工作正常(填充返回一行)。如果我第二次运行(调试)页面,我得到零行。同样,如果页面正在运行,并且我修改了 URL 中的一个参数以使 cmdString 发生变化,我得到零行。如果我做了一个简单的代码更改来强制重新编译,该页面将再次工作。

4

3 回答 3

0

听起来上面的代码是在 Page_Load 事件中运行的......并且它只在页面第一次加载时运行......你在这样的语句中是否有上面的代码?

protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)
    {
        DataTable table = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter();

        using (SqlConnection connection = new SqlConnection(conString))
        {
            using (SqlCommand command = new SqlCommand(cmdString, connection))
            {
                adapter.SelectCommand = command;
                rowCount = adapter.Fill(table);
            }
        }

    }
}
于 2009-11-20T15:08:18.267 回答
0

cmdString有 Page 范围,并且我使用 += 而不是 String.Replace 或(更明智地)使用 SqlParameter 填充参数,因此在第一次尝试之后它会被破坏。我假设嵌入在 VS 中的 Web 服务器使页面对象保持活动状态,即使您停止调试器,这也解释了为什么每次代码更改后它只能工作一次。

再次感谢 Phaedrus 的提问:“你确定它在每个负载上都包含一个值吗?”

于 2009-11-20T19:20:07.263 回答
0

您在 Page_Load 事件中使用过这个吗?

 if(!Page.IsPostBack)
 {
   YourBindDateMethod();
 }
于 2009-11-20T15:02:52.290 回答