2011-07-19 94 views
4

我知道这里有很多帖子,但我已经尝试过每一个帖子,他们都没有工作!页面加载后运行Javascript

我有一个aspx和aspx.cs页面正在运行使用Visual Studio 2010中

我的aspx页面上我有一个表

<table id="viewPendingTable" runat="server"></table> 

在aspx.cs页面,加载该表与数据。这工作正常,没有问题。一旦加载页面,表格就会包含我需要的动态添加的数据。

我使用jQuery数据表使用标准

$(document).ready(function() { 
    $('#viewPendingTable').dataTable({ 
     "bJQueryUI": true, 
    }); 
}); 

的风格我的桌子当我创建将伪信息测试表直接到HTML,正确的所需的数据表显示。但是,当我将jquery脚本应用到动态表。什么都没发生。动态数据按要求显示,但数据表(搜索功能,样式等)不存在。

现在我怀疑这是因为脚本在表填充数据之前运行。

这是我开始我的任务,强制jquery/javascript在aspx.cs运行并且表已填充之后运行。

但是我失败了...所以就像一个测试我认为我会运行一个警报('YAAY');从c#端使用注册启动脚本。但无济于事,不会奏效。

所以有人可以告诉我为什么这不起作用。

我试过了多种不同的启动脚本方式!

我的aspx是:

<table id="viewPendingTable" runat="server"></table> 

<script type="text/javascript" language="javascript" id="ShowTable"> 
<!-- 
    loadTable(); 
    function loadTable() { 
     $(document).ready(function() { 
      $('#viewPendingTable').dataTable({ 
       "bJQueryUI": true, 
       "sPaginationType": "full_numbers" 
      }); 
     }); 
     alert('ALEX'); 
     document.getElementById("table_id").width = "100%"; 
    } 
//--> 
</script> 

我的aspx.cs是:

protected void Page_Load(object sender, EventArgs e) 
{ 
    loadMyTable(); 
    ClientScriptManager a = null; 
    a.RegisterStartupScript(GetType(), "anotherkey", "alert('ASDFASDFASDF');", true); 
    a.RegisterStartupScript(GetType(), "anfgsdgsderkey", "alert('MOTHER');", false); 
    a.RegisterStartupScript(this.GetType(), "AKey", "loadTable();", true); 

    ClientScript.RegisterStartupScript(GetType(), "MyScript", "<script language=javascript>" + "alert('Hello ASP.NET'); }</script>"); 

    ScriptManager.RegisterStartupScript(this.Page, GetType(), "script", "alert('Success!');", true); 

    Page.ClientScript.RegisterClientScriptBlock(GetType(), "script", "alert('AAA');", true); 

    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "script", 
     "alert('a');" + 
     "$(document).ready(function(){" + 
      "$('#viewPendingTable').dataTable({" + 
       "\"bJQueryUI\": true" + 
       "\"sPaginationType\": \"full_numbers\"" + 
      "});" + 
     "}); alert('b'); document.getElementById('viewPendingTable').width = 100%", true); 

} 

我曾尝试多种方法试图页面加载后运行JavaScript,但他们的愤怒丢失如此糟糕。

有人请帮助!

为什么我的简单JavaScript警报不能运行?

即使我让他们的工作......数据表是正确的风格执行jquery后页面加载???

三江源请您的时间

亚历

附:对asp:gridView或asp:DataTable没有评论,因为EPICALLY失败了,我在日前发布了一个问题,没有人回复。如果你关心看看 CLICK HERE

+0

什么代码填写表格的问题?有没有客户端脚本可以做到这一点? –

+0

这是不是要在.NET中使用DataTables.net的方式 – naveen

+0

是什么方式? –

回答

4

更改这行代码,并尝试

"$('# " + viewPendingTable.ClientID + "').dataTable({" + 

你document.read你已经写好

它的脚本,因为你可以得到的acutal ID表格控件当页面上取得成功的浏览器渲染

编辑 利用

RegisterStartupScript,因为它会在页面末尾的</form>标记(在<form>标记结束之前)发出JavaScript。

+0

谢谢你的回复,我从来没有想过这件事! hahaa但是我仍然遇到脚本没有运行的问题! :( –

2

你面对最有可能的问题是,id="viewPendingTable"没有在页面上存在。

通过添加上你的表runat="server"属性,该ID将被更改,以便ASP.NET可以绑定到它的回传。

你需要使用该表的ClientID财产在你的jQuery:

所有的
viewPendingTable.ClientID 
2

首先,执行服务器端代码后,客户端代码始终运行。虽然客户端代码可以在HTML在您的浏览器中呈现之前运行。所以这与此无关。

如果您检查生成的HTML,你会看到,asp.net将生成的ID VOOR元素要应用runat属性。为了解决这个问题,在表中添加一个类并将您的js选择器更改为$(“。classname”)。

额外提示:使用类似Firebug调试器允许您调试JS代码,这使得它容易解决这样的:)