Динамический идентификатор не работает в GridView. Есть ли способ предотвратить повторяющиеся идентификаторы в gridview? - PullRequest
0 голосов
/ 11 сентября 2009

У моего gridview есть поле шаблона с меткой. Я хочу пометить поле с помощью QuestionID, чтобы оно не создавало дублирующихся идентификаторов.

Я пытался сделать следующее:

<asp:TemplateField HeaderText="No">
    <InsertItemTemplate>
        <label id='<%# (string.Format("Label_{0}", 
                                DataBinder.Eval(Container.DataItem,"QuestionID"))) %>'
                   runat="server"></asp:Label>  
    </InsertItemTemplate>
</asp:TemplateField>

Но я получил сообщение об ошибке

Свойство ID элемента управления можно установить только с помощью атрибута ID в теге и простого значения.

Кто-нибудь знает, как сделать так, чтобы я мог назначить идентификатор без создания дублирующих идентификаторов? Я хотел бы получить доступ к каждому с помощью JavaScript.

Спасибо,
Matt

1 Ответ

0 голосов
/ 11 сентября 2009

Прежде всего, вы не получаете эту ошибку из-за дублирования идентификаторов. Независимо от того, что вы даете своему управлению сервером в качестве идентификатора, asp.net генерирует новый идентификатор и отображает его. Я думаю, что ваше исключение касается оценки значения в свойстве ID.

IMO, пусть asp.net генерирует идентификаторы для ваших ярлыков. Добавьте класс к вашим ярлыкам и используйте JQuery для получения всех экземпляров ваших ярлыков.

В качестве альтернативы asp: помечает рендеринг диапазонов как вывод, так что вы можете изменить свой код следующим образом:

<asp:TemplateField HeaderText="No">
    <InsertItemTemplate>
        <span id='<%= (string.Format("Label_{0}", 
                                DataBinder.Eval(Container.DataItem,"QuestionID"))) %>'>
        </span>
    </InsertItemTemplate>
</asp:TemplateField>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...