Прежде всего, вы не получаете эту ошибку из-за дублирования идентификаторов. Независимо от того, что вы даете своему управлению сервером в качестве идентификатора, 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>