Sharepoint 中 Webpart 控件 ID转换 规则

在做sharepoint的webpart时,有时需要用javascript去控制一些webpart部件,但是webpart部件在被生成在页面上时,id值会被转换,根据机器的不同,体现不同的ID,唯有掌握id转换的规律,才能真正有效的实现让javascript去控制webpart上的控件~

我们先来看一段代码,看看一个DropdownList在被生成在网页上后的变成了什么:

<span dir="none"><select name="ctl00$m$g_97c2f67c_040f_4ebb_a021_6180784a64cb$ctl00$Taxonomy$ctl00$DropDownChoice" id="ctl00_m_g_97c2f67c_040f_4ebb_a021_6180784a64cb_ctl00_Taxonomy_ctl00_DropDownChoice" title="所属分类" class="ms-RadioText">
      <option selected="selected" value="-- 请选择 --">-- 请选择 --</option>
      <option value="规章制度">规章制度</option>
      <option value="政策解读">政策解读</option>
      <option value="公司策略">公司策略</option>
</select><br></span>

下拉框的id从原来的"Taxonomy"变成了"ctl00_m_g_97c2f67c_040f_4ebb_a021_6180784a64cb_ctl00_Taxonomy_ctl00_DropDownChoice",很乱。

sharepoint的webpart中,控件id的命名(生成后的)规则是:

机器id + "_ctl00_" + 控件原来id + "_ctl00_ctl00_" + 控件类型

控件原来的id和控件类型,都是相对死的,都是人为设定后可以得到的,关键是机器id怎么获得。

下面这段代码将获得机器id:

           string id = string.Empty;

            try
            {
                foreach (WebPart wp in this.Zone.WebParts)
                {
                    if (wp is Microsoft.SharePoint.WebPartPages.ListFormWebPart) //首先找到列表webpart
                    {
                        Microsoft.SharePoint.WebPartPages.ListFormWebPart listWp =
                                (Microsoft.SharePoint.WebPartPages.ListFormWebPart)wp;
                        id = listWp.ClientID;
                    }
                }
            }
            catch    {     }

所以,一个原来id为"AuthorName"的单行文本框的生成后id,应该是:

            string id = string.Empty;

            string result= id + "_ctl00_AuthorName_ctl00_ctl00_TextField";

            try
            {
                foreach (WebPart wp in this.Zone.WebParts)
                {
                    if (wp is Microsoft.SharePoint.WebPartPages.ListFormWebPart)

                    {
                        Microsoft.SharePoint.WebPartPages.ListFormWebPart listWp =
                                (Microsoft.SharePoint.WebPartPages.ListFormWebPart)wp;
                        id = listWp.ClientID;
                    }
                }
            }
            catch    {     }

原文地址:https://www.cnblogs.com/rynnwang/p/2517185.html