0

我在制作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');
    }
});
4

1 回答 1

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

于 2012-09-27T09:52:43.563 回答