我正在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);
}
}
我做错了什么?
我第一次执行页面时,它工作正常(Fill返回一行)。如果我第二次运行(调试)页面,我得到零行。同样,如果页面正在运行,并且我修改了URL中的一个参数以便cmdString发生更改,我会得到零行。如果我进行一个简单的代码更改以强制重新编译,页面将再次起作用。
答案 0 :(得分:0)
您是否在Page_Load事件中使用过这个?
if(!Page.IsPostBack)
{
YourBindDateMethod();
}
答案 1 :(得分: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);
}
}
}
}
答案 2 :(得分:0)
我的cmdString
有Page范围,我用+ =而不是String.Replace填充参数或者(更明智地)使用SqlParameter填充参数,所以在第一次尝试之后每次尝试都会损坏它。我假设嵌入在VS中的Web服务器即使停止调试器也会使页面对象保持活动状态,这就解释了为什么在每次代码更改后它只能工作一次。
再次感谢Phaedrus提出的问题:“你是肯定的,它包含每个负载的值吗?”