簡體   English   中英

動態添加行並在javascript和c#中保存值的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM