Шаблон динамического шаблона Gridview и уникальные элементы управления (т. Е. Текстовое поле, метка)? - PullRequest
1 голос
/ 03 февраля 2010

При создании Gridview во время разработки вы можете создать столбец шаблона следующим образом:

<asp:TemplateField>
     <ItemTemplate>
          <asp:Label runat="server" ID="Label1"></asp:Label>
     </ItemTemplate>
</asp:TemplateField>

И в HTML ему будет присвоено уникальное имя, например:

<span id="gvSelect_ctl02_Label1">blahblah</span>

И тогда я могу сослаться на этот ярлык в коде:

CType(e.Row.FindControl("Label1"), Label)

, который является ИДЕАЛЬНЫМ.Но я не могу понять, как это сделать, когда я создаю TemplateFields динамически.У меня есть следующий код в моем «InstantiateIn»:

Dim hl As New HiddenField
hl.ID = "hHidden"
hl.Value = 0
AddHandler hl.DataBinding, AddressOf Me.hl_DataBinding
container.Controls.Add(hl)

И это создает скрытый элемент управления с идентификатором hHidden в каждой строке.Но он не дает ему уникальный идентификатор, такой как «gvSelect_ctl02_hHidden», это просто «hHidden».И я знаю, что есть способы добавить номер строки к нему сам.Но мне было интересно, есть ли способ сделать это автоматически.И все же позволяет мне ссылаться на скрытое поле, как:

CType(e.Row.FindControl("hHidden"), HiddenField)

1 Ответ

0 голосов
/ 03 февраля 2010

Тьфу ... еще один ответ на мой собственный вопрос. Я искал имя в RowCreated. Я должен был искать его в событии RowDataBound.

это работает сейчас .. теперь, когда я делаю это правильно.

(у меня может быть слишком много вещей на ходу одновременно): S

...