Присвойте значение элементу управления в представлении данных - PullRequest
0 голосов
/ 26 декабря 2011

Я хочу присвоить значение текстовому полю в зависимости от выбранного значения в раскрывающемся списке. Но я пытаюсь это получить ошибку

"Ссылка на объект не установлена ​​для экземпляра объекта"

Вот мой код:

foreach (GridViewRow gvr in cgvRequest.Rows)
{
    //Programmatically access the CheckBox from the TemplateField

    //CheckBoxField chk = (CheckBoxField)gvr.FindControl("chkMark");
    Label lbl = (Label)gvr.FindControl("lblRequestAmount");

    TextBox _txtAmount = (TextBox)cgvRequest.FindControl("txtAmount");

    lbl.Text = Convert.ToString(
                   requestinfo.ElementAt(gvr.RowIndex).AmountRequested);

    DropDownList ddl = new DropDownList();
    ddl = (DropDownList)cgvRequest.FindControl("ddlApprovalType");

    ddl.SelectedValue = "A";
    _txtAmount.Text = lbl.Text;
}

Ответы [ 3 ]

2 голосов
/ 26 декабря 2011

Причина, по которой вы получаете

"Ссылка на объект не установлена ​​для экземпляра объекта"

означает, что элемент управления (раскрывающийся список и / или текстовое поле), для которого вы пытаетесь установить свойство, равен null. Это означает, что его невозможно найти методом FindControl().

Я просто предполагаю это, потому что не могу отладить ваш код, но держу пари, что это потому, что вы вызываете FindControl в сетке данных, а не в строке.

Попробуйте изменить код на:

TextBox _txtAmount = (TextBox)gvr.FindControl("txtAmount");

и

DropDownList ddl = new DropDownList();
ddl = (DropDownList)gvr.FindControl("ddlApprovalType");
0 голосов
/ 26 декабря 2011

Проверьте, получен ли Label.text или имеет значение null. После этого присвойте значения текстовому полю.

Вы получили ошибку из двух последних строк. Верно ..?

Можете ли вы опубликовать полный код этого кода, код разработчика gridview, а также Event ..?

На самом деле, что вы пытаетесь Объяснить мне ясно ..?

0 голосов
/ 26 декабря 2011

Если ваше текстовое поле "txtAmount" и DropDownList "ddlApprovalType" находятся в строке gridview, то почему вы пытаетесь получить это из самого gridview. Вы должны использовать тот же код, который вы используете для метки "lblRequestAmount". TextBox _txtAmount = (TextBox)gvr.FindControl("txtAmount"); Пожалуйста, дайте мне знать, если это не решит вашу проблему. Пожалуйста, опубликуйте несколько подробностей, например, на какой линии вы получаете эту ошибку. и опубликуйте свой код в конструкторе gridview.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...