动态ID不在GridView中工作。有没有办法防止网格视图中的重复ID?

时间:2009-09-10 21:28:39

标签: asp.net javascript data-binding gridview

我的gridview有一个模板字段,里面有一个标签。我想使用QuestionID标记该字段,以便它不会创建重复的ID。

我尝试了以下操作:

<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属性和简单值进行设置。

是否有人知道如何制作它以便我可以在不创建重复ID的情况下分配ID?我想用javascript访问每一个。

谢谢,
马特

1 个答案:

答案 0 :(得分:0)

首先,由于重复的ID,您没有收到此错误。无论您将什么作为ID提供给服务器控件,asp.net都会生成一个新ID并呈现它。您的例外是关于将值评估为我认为的ID属性。

IMO,让asp.net为您的标签生成ID。在标签中添加一个类,并使用JQuery获取标签的所有实例。

作为替代方案,asp:标记渲染跨度作为输出,因此您可以更改代码:

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