データベースに顧客のリストを戻すフォームがあります。新しい顧客を追加するための [顧客の追加] ボタンと、ユーザーが既存の顧客を編集できるハイパーリンクもあります。編集リンクをクリックすると、その顧客の正しいデータを戻すことができますが、変更を加えて [更新] ボタンをクリックしても、既存のデータは編集されません。もう1つの問題は、新しい顧客を追加するためにリダイレクトするときに「更新」ボタンも表示されることです(ユーザーは新しい顧客のデータを入力して「更新」をクリックします)。異なるアクション (新規追加または編集)/クエリに対して異なるコードを参照することは可能ですか? これが私がこれまでに持っているものです。助けてくれてありがとう。
<asp:Content ID="Content1" ContentPlaceHolderID="chpContent" runat="server">
<div>
<h2>Customer Listing</h2>
<br />
</div>
<p style="text-align:center">
<asp:Button ID="btnCustomer" class="button" runat="server" Text="Add New Customer" onclick="btnCustomer_Click" />
</p>
<asp:ListView ID="lv" runat="server"
onselectedindexchanged="lv_SelectedIndexChanged">
<LayoutTemplate>
<table width="110%" class="TableListing">
<tbody>
<thead>
<th width="150">Customer Name</th>
<th width="150">Email</th>
<th width="150">City</th>
<th width="40">State</th>
<th width="110">Phone</th>
<th width="80">Modify</th>
</thead>
<tr id="itemPlaceholder" runat="server"></tr>
</tbody>
</table>
<asp:DataPager ID="ItemDataPager" runat="server" PageSize="20">
<Fields>
<asp:NumericPagerField ButtonCount="5" />
</Fields>
</asp:DataPager>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%# Eval ("LastName") %>, <%# Eval ("FirstName") %></td>
<td><%# Eval ("Email") %></td>
<td><%# Eval ("City") %></td>
<td><%# Eval ("State") %></td>
<td><%# Eval ("Phone") %></td>
<td>
<asp:HyperLink ID="lnkEdit" runat="server" NavigateUrl='<%# "CustomerEdit.aspx?ID=" + Eval("CustomerID") %>' Text="Edit" />
</td>
</tr>
</ItemTemplate>
ここに私の CustomerEdit.aspx ページがあります:
public partial class CustomerEdit : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.Master.HighlightNavItem("Customers");
int CustomerID = Int32.Parse(Request.QueryString["ID"]);
//Declare the connection object
SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
//Connect to the db
Conn.Open();
//Define query
string sql = "SELECT * FROM Customer where CustomerID=@CustomerID";
//Declare the Command
SqlCommand cmd = new SqlCommand(sql, Conn);
//Add the parameters needed for the SQL query
cmd.Parameters.AddWithValue("@CustomerID", CustomerID);
//Declare the DataReader
SqlDataReader dr = null;
//Fill the DataReader
dr = cmd.ExecuteReader();
//Get the data
if (dr.Read() == false)
{
//No Records
dr.Close();
Conn.Close();
return;
}
txtFirstName.Text = dr["FirstName"].ToString();
txtLastName.Text = dr["LastName"].ToString();
txtEmail1.Text = dr["Email"].ToString();
txtEmail2.Text = dr["Email"].ToString();
txtPassword1.Text = dr["Password"].ToString();
txtPassword2.Text = dr["Password"].ToString();
txtAddress1.Text = dr["Address1"].ToString();
txtAddress2.Text = dr["Address2"].ToString();
txtCity.Text = dr["City"].ToString();
txtState.Text = dr["State"].ToString();
txtZip.Text = dr["Zip"].ToString();
txtPhone.Text = dr["Phone"].ToString();
txtFax.Text = dr["Fax"].ToString();
dr.Close();
Conn.Close();
}
protected void btnCancel_Click1(object sender, EventArgs e)
{
Response.Redirect("Customers.aspx");
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
int CustomerID = Int32.Parse(Request.QueryString["ID"]);
//Declare the connection object
SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
//Connect to the db
Conn.Open();
//Define query
string sql = "UPDATE Customer SET Fax=@Fax Where CustomerID=@CustomerID";
//Declare the Command
SqlCommand cmd = new SqlCommand(sql, Conn);
//Add the parameters needed for the SQL query
cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text);
cmd.Parameters.AddWithValue("@LastName", txtLastName.Text);
cmd.Parameters.AddWithValue("@Email", txtEmail1.Text);
cmd.Parameters.AddWithValue("@Password", txtPassword1.Text);
cmd.Parameters.AddWithValue("@Address1", txtAddress1.Text);
cmd.Parameters.AddWithValue("@Address2", txtAddress2.Text);
cmd.Parameters.AddWithValue("@City", txtCity.Text);
cmd.Parameters.AddWithValue("@State", txtState.Text);
cmd.Parameters.AddWithValue("@Zip", txtZip.Text);
cmd.Parameters.AddWithValue("@Phone", txtPhone.Text);
cmd.Parameters.AddWithValue("@Fax", txtFax.Text);
//Execute the query
int NumRows = 0;
NumRows = cmd.ExecuteNonQuery();
Conn.Close();
lblUpdate.Text = "Updated " + NumRows.ToString() + " record";
}
}
}
そして、ユーザーがリダイレクトされる Customers.aspx.cs ページ。
public partial class Customers : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.Master.HighlightNavItem("Customers");
//Declare the connection object
SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
//Connect to the db
Conn.Open();
//Define query
string sql = "SELECT CustomerID, LastName, FirstName, Email, Password, Address1, Address2, City, State, Zip, Phone, Fax FROM Customer";
//Declare a SQL Adapter
SqlDataAdapter da = new SqlDataAdapter(sql, Conn);
//Declare a DataTable
DataTable dt = new DataTable();
//Populate the DataTable
da.Fill(dt);
//Bind the Listview
lv.DataSource = dt;
lv.DataBind();
dt.Dispose();
da.Dispose();
Conn.Close();
}
protected void btnCustomer_Click(object sender, EventArgs e)
{
Response.Redirect("CustomerEdit.aspx");
}
protected void lv_SelectedIndexChanged(object sender, EventArgs e)
{
Response.Redirect("CustomerEdit.aspx");
}
}
}