ошибка при добавлении обновления в gridview

#c# #asp.net #sql-server-2008 #gridview

#c# #asp.net #sql-server-2008 #gridview

Вопрос:

Я пытаюсь и функция обновления для моего gridview. Я получаю сообщение об ошибке «Невозможно привести объект типа ‘System.Web.UI.WebControls.DataControlLinkButton’для ввода’System.Web.UI.WebControls.Текстовое поле’.

Мой код и хранимая процедура приведены ниже. Кто-нибудь может увидеть, где я могу ошибаться. При попытке передать параметр для электронной почты выдается ошибка. Спасибо

     protected void GridViewED_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
                SqlDataReader myDataReader = default(SqlDataReader);

                SqlConnection MyConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["RescueAnimalsIrelandConnectionString"].ConnectionString);
                SqlCommand command = new SqlCommand("sp_UpdateRescueDetails", MyConnection);

                if (!User.Identity.IsAuthenticated)
                {
                }
                else
                {
                    command.Parameters.Add("@PostalAddress", SqlDbType.VarChar).Value = ((TextBox)GridViewED.Rows[e.RowIndex].Cells[1].Controls[0]).Text;

                    command.Parameters.Add("@TelephoneNo", SqlDbType.VarChar).Value = ((TextBox)GridViewED.Rows[e.RowIndex].Cells[2].Controls[0]).Text;

                    command.Parameters.Add("@Website", SqlDbType.VarChar).Value = ((TextBox)GridViewED.Rows[e.RowIndex].Cells[3].Controls[0]).Text;

                    command.Parameters.Add("@Email", SqlDbType.VarChar).Value = ((TextBox)GridViewED.Rows[e.RowIndex].Cells[4].Controls[0]).Text;

                }

                try
                {
                    command.CommandType = CommandType.StoredProcedure;
                    MyConnection.Open();


                    myDataReader = command.ExecuteReader(CommandBehavior.CloseConnection);
                    // myDataReader.Read();


                    GridViewED.DataSource = myDataReader;
                    GridViewED.DataBind();

                    if (GridViewED.Rows.Count >= 1)
                    {

                        GridViewED.Visible = true;
                        lblMsg.Visible = false;

                    }
                    else if (GridViewED.Rows.Count < 1)
                    {
                        GridViewED.Visible = false;

                        lblMsg.Text = "Your search criteria returned no results.";
                        lblMsg.Visible = true;
                    }

                    MyConnection.Close();
                }
                catch (SqlException SQLexc)
                {
                    Response.Write("Read Failed : "   SQLexc.ToString());
                }
                GridViewED.EditIndex = -1;
            }
        }




 Alter PROC [dbo].[sp_UpdateRescueDetails]
 (
 @UserName nvarchar(50),
 @PostalAddress nvarchar(50),
 @TelephoneNo nvarchar (50),
 @Website nvarchar(50),
 @Email nvarchar(50)
 )
 AS
 BEGIN


Update [RescueDetails]
set [PostalAddress] = @PostalAddress, [Telephone_No] = @TelephoneNo, 
[Website] = @Website, [Email] = @Email 
 Where [UserName] = @UserName 
  

Ответ №1:

Я бы предположил, что элемент управления в GridViewED.Rows[e.RowIndex].Cells[4].Controls[0] не является TextBox . Больше нечего предложить, кроме того, что у вас неправильный номер ячейки или Controls индекс? Кроме того, возможно, текстовое поле электронной почты находится в неправильном месте в таблице?

Комментарии:

1. да, это было так просто. Я начал подсчет ячеек с 1, но должен был начать с 0. Спасибо