時光流逝,我們心愛的ASP.NET也步入了4.0的時代,微軟在ASP.NET 4.0中對很多特性做了修改。比如我將要討論的控件ID機制就是其中之一。
在ASP.NET 4.0之前我們總是要為控件的ClientID頭疼,比如明明一個叫lblName的Label放在一個叫做grd的GridView里面后,在頁面上改Label的ID就變成了諸如grd_clt02_lblName的一長串字符串,如果我們在前臺想在使用JS的時候找到該Label,我們不得不用到C#腳本來獲得該Label在前臺的確切ID,諸如:
< type="text/ "> var lblName = document.getElementById("<%=lblName.ClientID %>");</ >在ASP.NET 4.0中的每個控件上都多了一個叫做ClientIDMode的屬性,這就是解決上面獲取控件ID難的解決方案。這個屬性有四個可選值,根據所選值的不同它可以控制頁面上生成控件的ID格式。
下面就讓我們來了解下ClientIDMode屬性的四個值:
1,AutoID:
當控件的ClientIDMode選中為AutoID時,該控件的ClientID 值是通過串聯每個祖先容器控件(諸如GridView、ListView、LoginView等就是容器性控件)的ID和父容器控件的ID和其本身的ID 值生成的,當然如果該控件沒有在任何容器控件中其ClientID 值就是其本身的ID值,不會做任何更改。 另外如果該控件所在的父容器控件或祖先容器控件有些是顯示多個數據行的容器控件(例如GridView、ListView就是顯示多數據行的容器控件),那么還將在這些容器控件的ID值的后面會插入一個遞增的行號格式。 各部分之間以下劃線字符 (_) 分隔。 可見在 ASP.NET 4 之前的版本中使用的就是AutoID方案來生成控件的ClientID 值。
比如下面這個GridView里面就有一個名叫Label1的ID,我們將Label1的ClientIDMode設置為了AutoID:
<asp:GridView ID="grd_Account" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="Account Number" DataSourceID="sds_account" Height="63px" Width="676px" PageSize="5" ClientIDMode="AutoID" > <Columns> <asp:TemplateField HeaderText="Account Number" Sort ="Account Number"> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("[Account Number]") %>' ClientIDMode="AutoID"></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns></asp:GridView>該GridView生成的客戶端HTML代碼就是:
<table cellspacing="0" rules="all" border="1" id="grd_Account" style="height:63px;width:676px;border-collapse:collapse;"> <tr> <th scope="col">Account Number</th> </tr> <tr> <td> <span id="grd_Account_ctl02_Label1">1060</span> </td> </tr> <tr> <td> <span id="grd_Account_ctl03_Label1">1200</span> </td> </tr> <tr> <td> <span id="grd_Account_ctl04_Label1">1510</span> </td> </tr></table>
新聞熱點
疑難解答
圖片精選