我有一个表单列出了从数据库中提取的客户。该表单还包含编辑和删除按钮,以便更新现有客户的记录。我能够在第一页上为客户提取所有表格数据。但是,当我点击客户旁边的“编辑”按钮时,它不会带回任何数据,只会带回一个空白表格。我正在使用NavigateURL链接在“编辑”超链接中引用CustomerID。我已阅读并阅读,并对如何做到这一点感到困惑。任何人都可以看到我可能做错了什么?变得非常沮丧。请帮忙。
<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") + Request.QueryString["LastName"] + Eval("LastName") %>' Text="Edit" />
</td>
</tr>
</ItemTemplate>
然后我重定向到CustomerEdit页面:
protected void Page_Load(object sender, EventArgs e)
{
this.Master.HighlightNavItem("Customers");
int CustomerID = 0;
//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("@LastName", LastName);
//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();
dr.Close();
Conn.Close();
}
protected void btnCancel_Click1(object sender, EventArgs e)
{
Response.Redirect("Customers.aspx");
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
//Declare the connection object
SqlConnection Conn = new SqlConnection();
Conn.ConnectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
//Connect to the db
Conn.Open();
//Define query
string sql = "INSERT INTO Customer (FirstName, LastName, Email, Password, Address1, Address2, City, State, Zip, Phone, Fax) VALUES (@FirstName, @LastName, @Email, @Password, @Address1, @Address2, @City, @State, @Zip, @Phone, @Fax)";
//sql = "INSERT INTO xSample(Region,RepName,...) VALUES(@Region,@RepName,...)
//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";
}
}
}
答案 0 :(得分:1)
在custmeredit.aspx的page_load中
替换这个:
int CustomerID = 0;
使用:
int CustomerID = Int32.Parse(Request.QueryString["ID"]);