Текстовое поле не распознается в Gridview Редактировать шаблон элемента - PullRequest
3 голосов
/ 12 августа 2010

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

Ошибка с этой строкой

<a href="javascript:OpenPopupPage('Calendar.aspx','<%= txtGvEditTeDate.ClientID %>','<%= Page.IsPostBack %>');">

Он не распознает текстовое поле.

Ошибка компиляции

Сообщение об ошибке компилятора: CS0103: имя 'txtGvEditTeDate' не существует в текущем контексте

Ошибка источника:

<EditItemTemplate>
        <asp:TextBox ID="txtGvEditTeDate" runat="server"   onfocus="blur();"
             Text='<%# Bind("TimeEntryDate", "{0:d}") %>'>
        </asp:TextBox>

       <a href="javascript:OpenPopupPage('Calendar.aspx','<%= txtGvEditTeDate.ClientID %>','<%= Page.IsPostBack %>');">
       <img src="images/icon-calendar.gif" border="0" align="middle" ></a>
</EditItemTemplate>

Редактировать

Я добавил runat = "server" в <a>, и теперь я не получаю сообщение об ошибке, но когда в элементе управления календаря выбрана дата, она не вставляется в текстовое поле txtGvEditTeDate.

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

Попробуйте сделать это <a id="r1" runat="server" />

Затем в RowDataBound или RowEditing выполните:

var ctl = e.Row.FindControl("txtGvEditTeDate");
var link = e.Row.FindControl("r1");
link.href = "javascript ...";

и назначьте с сервера.Кроме того, вам может понадобиться сделать: e.Row.Cells [] для ссылки на ячейку, так как управление поиском строки иногда не работает для меня.

РЕДАКТИРОВАТЬ: Если у вас возникли проблемы с отображением даты обратно в элемент управления редактирования, возможно, это связано с тем, что каждый элемент управления сопоставляется с добавленным к нему идентификатором gridview (просмотрите источник, чтобы понять, что я имею в виду)txtGvEditTeDate не может ссылаться на элемент управления, поэтому вам придется искать обходной путь.Одним из способов может быть сохранение ссылки на текстовое поле в клиентской переменной javascript, которая может быть потенциально установлена ​​в операторе link href.Это становится немного более сложным.

0 голосов
/ 12 августа 2010

Поскольку textBox находится в EditItemTemplate, вы не можете получить к нему доступ таким образом.Вы должны либо использовать findcontrol, когда он связан с данными, либо полагаться на javascript, чтобы выполнить работу.

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