加载了jquery插件,但在WebControl中“无法访问”

时间:2012-09-26 13:10:55

标签: c# jquery jquery-plugins web-controls

我在制作fixedTableHeader方面遇到了麻烦。我发现了一个jQuery插件,可以在简单测试中正常工作。但我需要将它作为嵌入式资源包含在WebControl中。

所以我在Assembly.cs中注册了脚本并将它们设置为'嵌入式资源'

在WebControl中,他们的注册方式如下:

 this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "jquery",  Page.ClientScript.GetWebResourceUrl(this.GetType(), "LRGrid.jquery_min.js"));

 var fixedScript = Page.ClientScript.GetWebResourceUrl(this.GetType(), "LRGrid.jquery_fixedheadertable.js");

 this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "fixedheadertable", fixedScript);

 this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "jquery",  Page.ClientScript.GetWebResourceUrl(this.GetType(), "LRGrid.jquery.tablescroll.js"));

然后为了调用我做的脚本:

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "SetTable" + ClientID, "; $(document).ready(function(){$('table#" + ClientID + "').fixedHeaderTable({ footer: false, cloneHeadToFoot: false, fixedColumn: false });});", true); 

现在,如果我在FireFox中测试它,我会得到

.fixedTableHeader is not a function

IE9告诉我method not supported

我可以使用FireBug或IE Developer工具栏,看看脚本是否已加载?!?!?关于它为什么不可用的任何想法??

修改:: 现在我尝试直接在标记中加载脚本 - 然后它按预期工作。但是一旦我尝试使用嵌入式资源加载它们就会失败并且不会将fixedTableHeader识别为函数

$(document).ready(function () { 
    if(jQuery.isFunction($('table#" + ClientID + "').fixedTableHeader)){
      $('table#" + ClientID + "').fixedTableHeader({ height:200, width:'100%' });
    }else{
      alert('unable to load scroll script');
    }
});

1 个答案:

答案 0 :(得分:0)

好的 - 所以错误位于另一个文件中......糟糕!

我已经从BasePage加载jQuery(或其他人做过一次;))

Page.ClientScript.RegisterClientScriptInclude(
  typeof (WebPageBase), "jQuery", ResolveUrl("~/Scripts/jquery-1.4.1.js"));

当我尝试在那里加载jQuery时,这与我的控件发生冲突...现在我不想从任何一个位置删除jQuery初始化。所以我决定使BasePage加载条件。由于BasePage知道LRGrid,但不是相反......

所以这是解决方案:

if (!Page.ClientScript.IsClientScriptIncludeRegistered(typeof(LRGrid.LRGrid), "jquery"))
      {
        Page.ClientScript.RegisterClientScriptInclude(
             typeof (WebPageBase), "jQuery", ResolveUrl("~/Scripts/jquery-1.4.1.js"));
      }

希望你们中的一些人可以使用它:-p