据我所知,这里有很多帖子,但我已尝试过每一个帖子,但没有一个有效!
我有一个使用visual studio 2010运行的aspx和aspx.cs页面。
在我的aspx页面上我有一张桌子
<table id="viewPendingTable" runat="server"></table>
在aspx.cs页面上,表中加载了数据。这很好,没问题。加载页面后,该表包含我需要的动态添加数据。
我正在使用jquery dataTables使用标准
来设置我的表格样式$(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来正确设置数据表的样式???
谢谢你的时间
亚历
P.S。没有评论asp:gridView或asp:DataTable,因为那个EPICALLY失败了,我几天前就发布了一个问题而且没有人回复。如果你想看看 CLICK HERE
答案 0 :(得分:4)
更改此行代码并尝试
"$('# " + viewPendingTable.ClientID + "').dataTable({" +
你编写的document.read脚本中的
这是因为当页面在浏览器上呈现时,你可以获得表格控件的实际ID
修改强> 利用
RegisterStartupScript
因为它会在</form>
标记之前(<form>
标记结束之前)在页面末尾发出JavaScript。
答案 1 :(得分:2)
您面临的最可能的问题是您的网页上不存在id="viewPendingTable"
。
通过在表上添加runat="server"
属性,将更改ID,以便ASP.NET可以在回发时绑定它。
您需要在jQuery中使用表的ClientID
属性:
viewPendingTable.ClientID
答案 2 :(得分:2)
首先,客户端代码始终在执行服务器端代码后运行。虽然客户端代码可以在浏览器中呈现html之前运行。所以这与此无关。
如果检查生成的html,您将看到asp.net将生成应用runat属性的元素的id。要解决此问题,请在表中添加一个类,并将js选择器更改为$(“。classname”)。
额外提示:使用像firebug这样的调试器,它允许您调试js代码,这样可以轻松解决这些问题:)