0

いくつか問題があります。以下のコードは新しい行でテーブルを更新しますが、この行のすべてのフィールドは空です。テキストフィールドからテーブルMembersの新しい行に入力データを取得したいと思います。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;

public partial class Default4 : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
    {
        txtFirstName.Text = "";
        txtLastName.Text = "";
        txtAdress.Text = "";
        txtResidence.Text = "";
        txtEmail.Text = "";
    }
    protected void btnRegister_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(
            WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlCommand cmd = new SqlCommand("INSERT INTO Members(FirstName, LastName, Adress, Residence, Email) VALUES (@txtFirstName, @txtLastName, @txtAdress, @txtResidence, @txtEmail)", con);
        cmd.Parameters.AddWithValue("@txtFirstName", txtFirstName.Text);
        cmd.Parameters.AddWithValue("@txtLastName", txtLastName.Text);
        cmd.Parameters.AddWithValue("@txtAdress", txtAdress.Text);
        cmd.Parameters.AddWithValue("@txtResidence", txtResidence.Text);
        cmd.Parameters.AddWithValue("@txtEmail", txtEmail.Text);

        try
        {
            con.Open();
            cmd.ExecuteNonQuery();

            lblConfirm.Text = "Database updated, insert confirmed!";

            txtFirstName.Text = "";
            txtLastName.Text = "";
            txtAdress.Text = "";
            txtResidence.Text = "";
            txtEmail.Text = "";
        }
        finally
        {
            con.Close();
        }
    }
}

この行を変更した場合:

SqlCommand cmd = new SqlCommand("INSERT INTO Members(FirstName, LastName, Adress, Residence, Email) VALUES (@txtFirstName, @txtLastName, @txtAdress, @txtResidence, @txtEmail)", con);

このようなものに:

SqlCommand cmd = new SqlCommand("INSERT INTO Members(FirstName, LastName, Adress, Residence, Email) VALUES ('@txtFirstName', '@txtLastName', @txtAdress, @txtResidence, @txtEmail)", con);

次のようなフィールドを持つ行が出力されます。@txtFirstName | @txtLastName | [空]| [空]| [空]|

どんな助けでも素晴らしいでしょう、ありがとう!

4

2 に答える 2

1

登録ボタンを押すたびに がPage_Load実行され、テキスト ボックスが空になり、次に がbtnRegister_Click実行されます。この時点で、テキストボックスは空白です。

Page_Load イベントにチェックを追加する必要があります

   if(!IsPostBack)
   {
      ... // code to empty the textboxes
   }

MSDN の Page.IsPostBack プロパティ

于 2013-02-05T10:35:22.397 に答える
0

ここに問題があります....

    try
    {
        con.Open();
        cmd.ExecuteNonQuery();

        lblConfirm.Text = "Database updated, insert confirmed!";

        txtFirstName.Text = "";
        txtLastName.Text = "";
        txtAdress.Text = "";
        txtResidence.Text = "";
        txtEmail.Text = "";
    }

^^^^^^ ここですべてのフィールドをリセットしても違いはありません。ポストバックごとに発生します。

これを試して

if(!IsPostBack)
   {
            txtFirstName.Text = "";
            txtLastName.Text = "";
            txtAdress.Text = "";
            txtResidence.Text = "";
            txtEmail.Text = "";
   }

したがって、ユーザーの入力は、ボタンのクリック時に何もリセットされません..

ここであなたの目標を達成するためのより良い方法があります...

于 2013-02-05T10:46:38.567 に答える