Получить значение ячейки динамически созданной таблицы в ASP.NET - PullRequest
3 голосов
/ 02 января 2012

Я добавляю строки в динамически создаваемую таблицу с помощью javascript и хочу получить ее значения при обратной передаче.

Вот таблица:

<table id="summ" width="350px" border="1" >

Фрагмент Javascript для добавления строк:

 $('#summ > tbody:last').append('<tr><td><input type="button" id="delete" value="Delete"></td><td>' + sup + '</td><td>' + qty + '</td><td><input type="text"></td></tr>');

Как получить значения ячеек, добавленных в таблицу после кнопкинажал?«summ» не распознается, потому что если я добавлю runat=server в тег таблицы, Javascript не будет работать.

Ответы [ 2 ]

2 голосов
/ 02 января 2012

Вы можете определить метод AJAX (WebMethod) в коде (добавить ссылку на System.Web.Services) и использовать $ .ajax или $ .post для запроса. Взгляните на фрагмент кода, который я разместил для вашей справки.

Sample.aspx (встроенный код)

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Services" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    [WebMethod]
    public static string SendData(string sup,string qty)
    {
        return "OK : " + sup + " " + qty;
    } 
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Sample Page</title>
    <script src="../script/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            var sup1 = 10; 
            var qty1 = 20;
            $("#btn1").click(function () {
                var arg = '{sup: ' + sup1 + ',qty:' + qty1 + '}';
                $.ajax({
                    type: "POST",
                    url: "Sample.aspx/SendData",
                    data: arg,
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    success: function (msg) {
                        alert(msg.d);
                    },
                    error: function (msg) {
                        alert("Error: " + msg);
                    }

                });
            });
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       <input type="button" id="btn1" value="Save" />
    </div>
    </form>
</body>
</html>

Если вы хотите использовать атрибут «runat», добавьте пустой атрибут внутри и напишите ClientID.

<table  runat="server"  id="summ" width="350px" border="1" >
 <tbody>
   <tr></tr>
 </tbody>
</table>

JQuery код

$("#<%=summ.ClientID%> > tbody:last").append('<tr><td><input type="button" id="delete" value="Delete"></td><td>' + sup1 + '</td><td>' + qty1 + '</td><td><input type="text"></td></tr>');

OR

2 голосов
/ 02 января 2012

Сервер не подозревает, что вы копались в DOM. Вы можете отправить значения обратно, используя HiddenFields:

var sup = "test";
var qty = 123;

$('#summ > tbody:last').append('<tr><td><input type="button" id="delete" value="Delete"></td><td>' + sup + '</td><td>' + qty + '</td><td><input type="text"></td></tr>');
$('#HiddenField_sup').val(sup);
$('#HiddenField_qty').val(qty);      

На сервере:

Response.Write(HiddenField_qty.Value);
Response.Write(HiddenField_sup.Value);
...