#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. Спасибо