[英]Problems with adding rows dynamically and save values in javascript and c#
我從數據庫中創建了一個表,現在我想添加行並保存它。 我的問題是,當我第二次添加一行時,確實在數據庫中保存了之前的行,但是第二行出現后,該行就被保存了。 如果刷新頁面或使用location.reload(),則第一行可見,但第二空白不可見。
我用javascript寫(但是我的整個程序在c#中運行):
function addRow() {
var i = parseInt(document.getElementById('counter').value);
if ((i-1)>=0) {
var id = guid();
save_row_before(i-1);
var row = '<input ID="id'+ i + '" runat="server"type="text"
document.getElementById('table').getElementsByTagName('tbody')[0].innerHTML += row;
document.getElementById('counter').value = i + 1;
}
}
function save_row_before(i) {
var r = document.getElementById('id' + i).value ;
$.ajax({
type: "POST",
url: "Default.aspx/saveRows",
data: '{row: "' + r + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false
});
}
提前致謝!!
請參閱為什么ASP.NET Web表單需要Runat =“ Server”屬性?
如果要在服務器上運行輸入,則需要在部署應用程序之前對其進行編譯。
記住:
Asp.net(c#)生成html。
JavaScript處理該html。
如果使用runat = server添加一行:
var row = '<input ID="id'+ i + '" runat="server"type="text" ...
后面的代碼將不知道該項目。
另請注意,通常您不會將html發送到服務器。 只需發送json。
這是一個使用敲除js的出色教程: http : //learn.knockoutjs.com/#/? tutorial= loadingsaving
首先,您必須使用ASP.net服務器名稱,以便計數器文本框將調用:
getElementById('<%= counter.ClientID%>')
第二點,您無法使用Javascript添加服務器端控件
runat =“ server”在這里沒有意思是它的客戶端控制
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.