New column in a table and problem with update function
<p>I have a problem with my UPDATE functions and I need your help.</p>

<p>I created a table Computers(COM_ID,Company,Price,Model,Description,CAT_ID,Image,Quantity)</p>

<p><strong>I have a web service(AdminCentral.asmx) with this code</strong></p>

<pre><code>[WebMethod(Description = "Updates a  computer in the computer table", EnableSession = false)]

public string updateItem(string comid, string company, double price, string model, string description, string image, int CAT_ID, int quantity)

{

    try

    {

        dbConn = new DbConnection();

        SqlConnection conn = dbConn.OpenConnection();

        SqlCommand updateItem = new SqlCommand("UpdateComputer", conn);

        updateItem.CommandType = CommandType.StoredProcedure;


        SqlParameter updatecomid = updateItem.Parameters.Add("@COM_ID", SqlDbType.Char, 15);
        updatecomid.Value = comid;

        SqlParameter updateCompany = updateItem.Parameters.Add("@Company", SqlDbType.Char, 90);
        updateCompany.Value = company;

        SqlParameter updatePrice = updateItem.Parameters.Add("@Price", SqlDbType.Money, 8);
        updatePrice.Value = price;

        SqlParameter updateModel = updateItem.Parameters.Add("@Model", SqlDbType.Char, 150);
        updateModel.Value = model;


        SqlParameter updateDescription = updateItem.Parameters.Add("@Description", SqlDbType.Char, 255);
        updateDescription.Value = description;

        SqlParameter updateImage = updateItem.Parameters.Add("@Image", SqlDbType.Char, 50);
        updateImage.Value = image;


        SqlParameter updateCatId = updateItem.Parameters.Add("@CAT_ID", SqlDbType.Int, 2);
        updateCatId.Value = CAT_ID;

        SqlParameter updateQuantity = updateItem.Parameters.Add("@Quantity", SqlDbType.Int, 2);
        updateQuantity.Value = quantity;

        return this.ExecuteQuery(updateItem);

    }
    catch (Exception e)
    {
        return e.ToString();

    }
}
</code></pre>

<p>In a different application I created the web reference and I have this Datagrid</p>

<pre><code>&lt;asp:datagrid id="Computerchange" runat="server" AllowPaging="True" PageSize="2" AutoGenerateColumns="False" BorderColor="Gainsboro" Height="500px"

                            &lt;Columns&gt;
                                &lt;asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" HeaderText="Admin Functions" CancelText="Cancel" EditText="Edit"&gt;&lt;/asp:EditCommandColumn&gt;
                                &lt;asp:ButtonColumn Text="Delete" HeaderText="Delete" CommandName="Delete"&gt;&lt;/asp:ButtonColumn&gt;
                                &lt;asp:BoundColumn DataField="com_id" ReadOnly="True" HeaderText="Computer Number"&gt;&lt;/asp:BoundColumn&gt;
                                &lt;asp:BoundColumn DataField="company" HeaderText="Company"&gt;&lt;/asp:BoundColumn&gt;
                                &lt;asp:BoundColumn DataField="price" HeaderText="Price"&gt;&lt;/asp:BoundColumn&gt;
                                &lt;asp:BoundColumn DataField="model" HeaderText="Model"&gt;&lt;/asp:BoundColumn&gt;
                                &lt;asp:BoundColumn DataField="description" HeaderText="Description"&gt;&lt;/asp:BoundColumn&gt;
                                &lt;asp:BoundColumn DataField="id" ReadOnly="True" HeaderText="Category"&gt;&lt;/asp:BoundColumn&gt;
                                &lt;asp:BoundColumn DataField="imgSrc" HeaderText="Image"&gt;&lt;/asp:BoundColumn&gt;
                                &lt;asp:BoundColumn DataField="quantity" ReadOnly="True" HeaderText="Quantity"&gt;&lt;/asp:BoundColumn&gt;
                            &lt;/Columns&gt;
                        &lt;/asp:datagrid&gt;
</code></pre>

<p><strong>and I wrote this function</strong></p>

<pre><code>private void Computerchange_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)

{

    //Store updated column values in local variables:
    string updateCOM_ID = e.Item.Cells[2].Text;
    string updateCompany = ((TextBox)e.Item.Cells[3].Controls[0]).Text;
    double updatePrice = double.Parse(((TextBox)e.Item.Cells[4].Controls[0]).Text);
    string updateModel = ((TextBox)e.Item.Cells[5].Controls[0]).Text;
    string updateDescription = ((TextBox)e.Item.Cells[6].Controls[0]).Text;
    int updateCategoryId = int.Parse(e.Item.Cells[7].Text);
    string updateImage = ((TextBox)e.Item.Cells[8].Controls[0]).Text;
    int updateQuantity = int.Parse(e.Item.Cells[9].Text);
    newView.RowFilter = "com_id='" + updateCOM_ID + "'";
    if (newView.Count &gt; 0)
    {
        //Delete the row that is being updated
        newView.Delete(0);
    }
    newView.RowFilter = "";

    //Create a new DataRow and populate it with the new data.
    DataRow Row = Table.NewRow();
    Row["com_id"] = updateCOM_ID;
    Row["company"] = updateCompany;
    Row["price"] = updatePrice;
    Row["model"] = updateModel;
    Row["description"] = updateDescription;
    Row["id"] = updateCategoryId;
    Row["imgSrc"] = updateImage;
    Row["quantity"] = updateQuantity;

    //Insert the new DataRow:
    Table.Rows.Add(Row);
    Computerchange.EditItemIndex = -1;
    Computerchange.DataSource = newView;
    Computerchange.DataBind();

    // Now update the database with the new data
    adminCentral1.adminCentral newData = new adminCentral1.adminCentral();
    string results;
    results = newData.updateItem(updateCOM_ID, updateCompany, updatePrice, updateModel, updateDescription, updateImage, updateCategoryId, updateQuantity);

    if (results == "Success")
    {
        errorLabel.Text = "Computer Updated to database!";
    }
    else
    {
        errorLabel.Text = results;
    }
</code></pre>

<p>When I click the Update button the error which I have is </p>

<pre><code>"**Specified argument was out of the range of valid values.
Parameter name: index**"

Stack Trace:

[ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: index]

   System.Web.UI.ControlCollection.get_Item(Int32 index) +8750274
   AdminMainPage.Computerchange_UpdateCommand(Object source, DataGridCommandEventArgs e) +626
   System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs e) +115
   System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e) +498
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
   System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e) +121
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
   System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +125
   System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +169
   System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +9
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +176
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
</code></pre>

<p>Can you please help me with this error? I would like to mention that first, I didn't have the Quantity column and the code was working. When I inserted the Quantity column then I had this error. I think that I am trying to access a control which is not created or not exist in the collection.</p>
