У меня возникла проблема с попыткой найти элемент управления текстовыми полями на той же странице. Он продолжает давать мне нуль, когда я его отлаживаю.Не удается найти текстовое поле с FindControl C#
Вот мой код:
public void UpdateTimeLog(string input)
{
string timeNumber = "txtTime" + input;
TextBox myTextbox = (TextBox)FindControl(timeNumber);
sqlConnection.Open();
using (var command = new SqlCommand("UPDATE [JobSheet] SET [Time" + input + "][email protected]" + input + " WHERE [JobShtId][email protected]", sqlConnection))
{
command.Parameters.AddWithValue("@JobShtId", jobSheetId);
command.Parameters.AddWithValue("@Time" + input + "", myTextbox.Text);
command.ExecuteNonQuery();
}
sqlConnection.Close();
}
проблема решена: я не указал, что элемент управления TextBox был в контейнере (например ContentPlaceHolder1.).
Вот исправленный код:
public void UpdateTimeLog(string input)
{
var container = Master.FindControl("ContentPlaceHolder1");
string timeNumber = "txtTime" + input;
TextBox myTextbox = (TextBox)container.FindControl(timeNumber);
sqlConnection.Open();
using (var command = new SqlCommand("UPDATE [JobSheet] SET [Time" + input + "][email protected]" + input + " WHERE [JobShtId][email protected]", sqlConnection))
{
command.Parameters.AddWithValue("@JobShtId", jobSheetId);
command.Parameters.AddWithValue("@Time" + input + "", myTextbox.Text);
command.ExecuteNonQuery();
}
sqlConnection.Close();
}
Вместо найти контроля. Пожалуйста, попробуйте Page.FindControl & this.Page.FindControl и дайте мне знать, если это поможет вам –
Где указано текстовое поле? это в каком-то другом контейнере, таком как gridview? – Adil
Я сделал это, но это не сработало. Я выяснил, почему он возвращал null, и причина была в том, что я не указал, что элемент управления находится в контейнере. Например, ContentPlaceHolder1 –