0

VS2008でASP.NET2.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は1行を返します)。ページを2回実行(デバッグ)すると、行がゼロになります。同様に、ページが実行されていて、cmdStringが変更されるようにURLのパラメーターの1つを変更すると、行がゼロになります。些細なコード変更を行って再コンパイルを強制すると、ページは再び機能します。

4

3 に答える 3

0

これをPage_Loadイベントで使用しましたか?

 if(!Page.IsPostBack)
 {
   YourBindDateMethod();
 }
于 2009-11-20T15:02:52.290 に答える
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サーバーは、デバッガーを停止してもページオブジェクトを存続させると想定しています。これが、コードが変更されるたびに1回だけ機能する理由を説明しています。

質問してくれたPhaedrusにもう一度感謝します:「それは各負荷の値を含んでいると確信していますか?」

于 2009-11-20T19:20:07.263 に答える