快速业务通道

漫话ID(中)——UniqueID和ClientID

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
为 name。控件的 ClientID 被呈现为 id 属性。 ClientID 和 UniqueID 属性都基于原始的 ID 属性,并用足够的信息进 行了修改,以保证页面中结果的唯一性。ClientID的值可在客户端脚本中引用。如果在浏览器中显示一个 具有命名容器的页面,则可以查看该页面的源文件,从中找到唯一的 ID,这些 ID 作为命名容器子控件 的 name 属性和 id 属性生成。但是,建议不要依赖于直接引用在浏览器中看到的 ID。因为用于生成子 控件唯一ID 的公式可能会发生变化,应当获取子控件的 ClientID 属性值,并用该值来引用该子控件。 例如,您可能会在页面中动态创建客户端脚本。如果客户端脚本引用一个子控件,则应获取该子控件的 ClientID 属性,并将其嵌入到动态脚本中。

例2:

假设有子控件:

<asp:TextBox ID = "textboxInfo" runat ="server" Text = "Test Text box" name="haha"></asp:TextBox>

那么我们可以在脚本中这样写

var tempt = ''<%=textboxInfo.ClientID%>'';
var controlname = document.getElementById(tempt).name;
var controlid = document.getElementById(tempt).id;

还有一个问题我们需要注意:在使用UniqueID和ClientID的时候要小心点,千万不要“迫不及待”地 使用了这些属性,在运行的过程中可能会碰到一些让人头疼的问题.

例3:

我们试着给例1增加一点点功能:

我们修改代码:

<asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="false">

改为:

<asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="false" OnItemCreated="DataGrid1_ItemCreated" >

同时更改button相关代码 

 <asp:Button ID="Button1" runat="server" Text="You Can Click Me~"/>

改为:

 <asp:Button ID="Button1" runat="server" Text="You Can Click Me~"  OnClick="Button1_Click" />

同时在后台添加代码:

    protected void DataGrid1_ItemCreated(object sender, DataGridItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            string s = e.Item.FindControl("Button1").ClientID;
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write("Button1_Click");
    }

接着运行一下代码,看看会出现什么情况?你会发现Button1_Click方法没有被执行。如果我们注释掉 这一行: string s = e.Item.FindControl("Button1").ClientID;

一切又恢复正常了,页面上显示了“Button1_Click”文本。 至于其中的原因,我也没能完全搞清楚 ,所以希望园子里面有兄弟姐妹可以出来帮忙解释一下。

上面提到,除了repeater之类的控件中会碰到UniqueID和ClientID的问题之外,我们还可以在 UserControl中碰到相同的情况,关于具体的代码实例我会在下一篇文章结束后给出的示例代码中给出, 就不在这个页面上继续贴代码了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号