元素的客户端ID在sharepoint页面中更改?为什么?什么时候?

时间:2012-01-19 09:24:58

标签: sharepoint sharepoint-2007

sharepoint页面中每个元素的客户端ID有时会发生变化。

任何人都可以告诉我为什么以及它改变的实例???

3 个答案:

答案 0 :(得分:2)

  

jQuery太棒了!它使客户端开发更快   几乎所有需求都可以使用无数的插件。运用   使用Asp.NET Web-Forms的jQuery在处理时会变得更加严重   嵌套服务器控件。使用ASP.NET时会附加ClientID   母版页。 JavaScript中的对象往往如下所示:       ctl00_m_g_aaf13d41_fc78_40be_81d5_2f40e534844f_txtName       上述问题的难点在于,为了获得元素txtName,必须知道完整的“路径”。真是太棒了   加重引用使用以下方法获取对象:       的document.getElementById( 'ctl00_m_g_aaf13d41_fc78_40be_81d5_2f40e534844f_txtName');       在开发可能在典型的ASP.NET应用程序或SharePoint中使用的服务器控件或Web部件时,这将成为一个大问题。   如果您不知道完整路径,则无法对上述路径进行硬编码   控制。

     

幸运的是,有几种方法可以解决这个问题。有三个,特别是我会提到。第一个是jQuery   相当于标准的JavaScript方法:       的document.getElementById( “<%= txtName.ClinetID%>” 中);“);       这可以通过使用以下命令在jQuery中完成:       $(“#”<%= txtName.ClinetID%> “中);”);       第二个jQuery方法不需要服务器标签。此方法搜索所有标记并查找以。结尾的元素   指定文字。这个方法的jQuery代码如下所示:       $( “[ID $ = '_ txtName的']”);       当然,上述两种方法都存在缺点。第一个是快速的,但需要服务器标签。这很快,但看起来很乱。   此外,它不适用于外部脚本文件。第二   替代方案是干净的,但它可能很慢。正如我之前所说,有   其他几种选择,但这两个是我自己找到的   使用最多。

     

第三个在C#代码中注册Javascript。

Page.ClientScript.RegisterStartupScript(GetType(), "saveScript",

String.Format("function EnableSave( isDisabled )"+

"{{ var saveButton = document.getElementById(\"{0}\");"+

"saveButton.disabled=isDisabled;}}", btnSave.ClientID), true);
  

不要忘记在加载控件后调用此脚本,我的意思是在Controls.Add()之后;在CreateChildControls方法中   开发webparts。

答案 1 :(得分:0)

$( '输入[标题= “名称”]')

查看页面源并获取title属性的值 - 每次都有效。

答案 2 :(得分:0)

ListBox1.Attributes.Add("onmouseup",
    "document.getElementById('" + base.ClientID + "_" + lbnFilter.ClientID + "').style.display='block';");