我有一个表单,它会在db中返回客户列表。还有一个添加客户按钮,用于添加新客户和超链接,用户可以在其中编辑现有客户。单击编辑链接时,我能够为该客户带回正确的数据,但如果我进行更改并单击“更新”按钮,则不会编辑现有数据。另一个问题是,在重定向以添加新客户时,用户也会出现“更新”按钮(用户输入新客户的数据并单击“更新”)。是否可以为不同的操作(添加新的或编辑)/查询引用不同的代码?这是我到目前为止所拥有的。谢谢你的帮助。
<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");
}
}
}
答案 0 :(得分:2)
更新无效,因为您覆盖了页面加载上的数据。使用IsPostBack
来避免这种情况:
protected void Page_Load(object sender, EventArgs e)
{
this.Master.HighlightNavItem("Customers");
if(!IsPostBack)
{
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();
}
}