私はSQLデータベースのデータで満たしたデータグリッドを持っています。また、データベースに新しい連絡先を追加する機能を追加しました。私が持っている問題は、連絡先を追加してF5(Webページの更新)を押すと、データベースに別の連絡先が追加されたことです。ASP.NETページリフレッシュに新しいデータを追加することを避ける
私はポストバック後にテキストフィールドをクリアしますが、何らかの理由で文字列がメモリに残り、ウェブページをリフレッシュするたびに別の連絡先が追加されます。
ボタンをクリックした直後にデータグリッドが更新されないという問題もあります。その理由は、最初にページを更新する必要があったからです。私はこれらの2つの問題が関連していると信じています。
ここに私のコードがありますが、私はaspxページは必要ではないと思っていますが、必要ならばそれを与えることができます。
public partial class Default : System.Web.UI.Page
{
SqlConnection connection = new SqlConnection("server = Sqlconnection; uid = username; pwd = password; database = database;");
protected void Page_Init(object sender, EventArgs e)
{
//------------------------------------------------DataGrid--------------------------------------------------
SqlDataAdapter SqlCommandDG = new SqlDataAdapter("SELECT FirstName, LastName, Email, PhoneNumber, CompanyName FROM ContactPerson CP, Company C WHERE CP.[CompanyID] = C.[Company_ID]", connection);
DataSet ds = new DataSet();
SqlCommandDG.Fill(ds);
DataView source = new DataView(ds.Tables[0]);
DataGrid1.DataSource = source;
DataGrid1.DataBind();
//----------------------------------------------Dropdown list------------------------------------------------
SqlCommand SqlCommandDD = new SqlCommand("SELECT * FROM Company");
SqlCommandDD.Connection = connection;
connection.Open();
DropDownList1.DataSource = SqlCommandDD.ExecuteReader();
DropDownList1.DataValueField = "Company_ID";
DropDownList1.DataTextField = "CompanyName";
DropDownList1.DataBind();
connection.Close();
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
connection.Open();
string fName = fNameTextBox.Text;
string lName = lNameTextBox.Text;
string email = EmailTextBox.Text;
string phoneNr = phoneNrTextBox.Text;
string company = DropDownList1.SelectedValue;
string sqlquery = ("INSERT INTO ContactPerson (FirstName, LastName, Email, PhoneNumber, CompanyID) VALUES ('" + fNameTextBox.Text + "','" + lNameTextBox.Text + "','" + EmailTextBox.Text + "','" + phoneNrTextBox.Text + "','" + DropDownList1.SelectedValue + "')");
SqlCommand command = new SqlCommand(sqlquery, connection);
command.Parameters.AddWithValue("FirstName", fName);
command.Parameters.AddWithValue("LastName", lName);
command.Parameters.AddWithValue("Email", email);
command.Parameters.AddWithValue("PhoneNumber", phoneNr);
command.Parameters.AddWithValue("CompanyID", company);
command.ExecuteNonQuery();
fNameTextBox.Text = string.Empty;
lNameTextBox.Text = string.Empty;
EmailTextBox.Text = string.Empty;
phoneNrTextBox.Text = string.Empty;
connection.Close();
}
}
は、どのように私は、データベース内のすべての私のrecods経由せずに存在することを確認するのでしょうか?私は、成功していないSQLクエリでIF NOT EXISTS行を試しました。また、私はBindGrid()メソッドを作成し、それをデータグリッドにバインドする方法はありますか? – Joel
@Mynter:BindGrid()メソッドを作成するには? - Kafの答えから、 "Page_Initメソッドからデータバインディングコードを削除し、同じコードで新しいメソッドを作成する"という名前の "BindGrid()"から。 – Chris
**作成方法:** 'private void BindGrid(){// Page_Init()メソッドからすべてのコードをカットアンドペーストします}'あなたはすでに上記のコードでグリッドをバインドしています。 'IF NOT EXIST'ビットで質問を投稿できますか? – Kaf