1

I have a form that lists customers pulled from a db. The form also consists of edit and delete buttons in order to update an existing customer's record. I am able to pull back all the table data for the customers on the first page. However, when I click the "Edit" button next to a customer it does not bring back any data but just brings back a blank form. I am referencing the CustomerID in the "Edit" hyperlink with a NavigateURL link. I have read and read and am getting confused about how to do this. Can anyone see what I may be doing wrong? Getting very frustrated. Please help.

<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>

I then redirect to the CustomerEdit page:

    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";

    }

}

}

2
  • 1
    I think I missed the code that parses the ID that is in the querystring on your edit page. Commented Nov 25, 2012 at 20:44
  • I'm sorry I don't understand what you mean. Could you please clarify? In my example code there is a tryparse statement, but it is referring to if the user entered a CustomerID. But I am not requesting that the user enter this. Commented Nov 25, 2012 at 20:57

1 Answer 1

1

In your page_load of the custmeredit.aspx

replace this:

int CustomerID = 0;

with:

int CustomerID = Int32.Parse(Request.QueryString["ID"]);
Sign up to request clarification or add additional context in comments.

3 Comments

Thank you so much! I've been trying to figure this out for hours.
If I could ask another question please: My Customers.aspx page has an option to add another customer which also redirects to the CustomerEdit.aspx page. Is there a way to separate the code for adding new customers and updating existing customers? When either the "Add Customer" button or the "Edit" customer hyperlink is clicked, the user is redirected to the EditCustomer.aspx pageload event. Would it be possible to write an if statement stating that if the customerID were blank (thus a new customer being added), it could run other code?
You better start a new question (referencing this one). But I can imagine you give an ID=0 as querystring and based on that either do an update or an insert.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.