0

ボタンが押されたときに次のコードが呼び出されます。

protected void Button1_Click(object sender, EventArgs e)
{
    if (DropDownList1.SelectedItem.ToString() =="ER00 - File Header")
    {
        using (SqlConnection con = 
                   new SqlConnection(ConfigurationSettings.AppSettings["DBcon"]))
        {
            if (String.IsNullOrEmpty(TextBox_ID.Text.ToString()))
            {
                lbl_NoBatchID.Text = "Please enter BatchID!";
            }
            else
            {
                try
                {
                    SqlCommand sqlCommand = new SqlCommand(
                        "Select * from tbl_WinApps_FileHeader Where BatchID =" +
                        TextBox_ID.Text.ToString());

                    sqlCommand.Connection = con;
                    con.Open();
                    SqlDataReader read = sqlCommand.ExecuteReader();

                    GridView1.DataSource = read;
                    GridView1.DataBind();
                }
                catch (Exception)
                {                           
                }
            }
        }
    }
}

ユーザーが ID を入力し、ボタンを押すと、テーブルが SQL で表示されます。

ユーザーがテキストボックスに何も入力しなかった場合、「BatchID を入力してください!」というメッセージが表示されます。しかし、その後はそこに残り、有効なIDをすでに入力してもクリアされません。それはなぜですか?

4

3 に答える 3

1

ASP.NET ページには、要求間でコントロールの状態を維持できる ViewState と呼ばれるものがあります。GridView の DataSource 値をクリアして再バインドする必要があります。

           if (String.IsNullOrEmpty(TextBox_ID.Text.ToString()))
            {
                lbl_NoBatchID.Text = "Please enter BatchID!";
                GridView1.DataSource=null;
                GridView1.DataBind();
            }
            else
            {

ルックアップが成功した場合は、エラーをクリアする必要もあります。

catch(Exception e){
}
lbl_NoBatchID.Text = "";

catch()また、あなたの空は、発生する可能性のあるデータベースまたは検索エラーを飲み込むことにも注意してください。

于 2013-03-15T02:05:23.683 に答える
1
   protected void Button1_Click(object sender, EventArgs e)
{
   if (DropDownList1.SelectedItem.ToString() =="ER00 - File Header")
    {

        using (SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["DBcon"]))
        {
            if (String.IsNullOrEmpty(TextBox_ID.Text.ToString()))
            {
                lbl_NoBatchID.Text = "Please enter BatchID!";

            }
            else
            {
                try
                {

                    SqlCommand sqlCommand = new SqlCommand("Select * from tbl_WinApps_FileHeader Where BatchID =" + TextBox_ID.Text.ToString());
                    sqlCommand.Connection = con;
                    con.Open();
                    SqlDataReader read = sqlCommand.ExecuteReader();

                        GridView1.DataSource = read;
                        GridView1.DataBind();
                    lbl_NoBatchID.Text = "";
                }
                catch (Exception)
                {                           

                }

            }
        }

    }
于 2013-03-15T02:06:09.487 に答える
0

Else ブロックに次のコード行を追加します。

lbl_NoBatchID.Text = "";
于 2013-03-15T02:07:40.497 に答える