从动态添加的行中选择表数据

时间:2012-11-13 07:55:47

标签: jquery json

这与我之前的问题有关:How to add onclick function for programmatically created button

现在,我目前有一个带有两个文本框的表单,一个按钮和一个隐藏表。单击该按钮时,将显示该表,并添加一行,其中两列上的文本框值和第三列的删除按钮。现在,我可以在单击“删除”按钮时删除所选行。我的新问题是如何获取第一列和第二列的数据,以便我可以更新数据库?

我使用JSON来更新数据库。这是我目前的代码:

$("#addToDisplay").click(function (event) {
    $("#tblProducts").removeClass("hide");
    var counter = 1;
    event.preventDefault();
    counter++;
    var prod = {prodName: $("#txtProducts").val(), prodQty: $("#txtQty").val()}
    $.ajax({
        type: "POST",
        traditional: true,
        url: "/Service/JsonUpdateProduct",
        dataType: "json",
        data: prod,
        success: function (result) {
            var newRow = "<tr><td id='rowProd" + counter + "'>" + $("#txtProducts").val() + "</td><td id='rowQty" + counter + "'>" + $("#txtQty").val() + "</td><td><input type='button' value='Remove' id='btnRemove" + counter + "' class='remove' /></td></tr>";
            $("#tblProducts").append(newRow);

            $("#tblProducts").on("click", ".remove", function () {
                $(this).closest("tr").remove();
                var rowCount = $("#tblProducts tr").length;
                var removeProd = {revertName: $("#rowProd" + counter).val(), revertQty: $("#rowQty" + counter).val()}
                $.ajax({
                    type: "POST",
                    traditional: true,
                    url: "/Service/JsonRemoveProduct",
                    dataType: "json",
                    data: removeProd,
                    success: function (result) {
                        if (rowCount == 1) {
                            $("#tblProducts").addClass("hide");
                        }
                    }
                });
                $("#productQty").val("");
                $("#autoCompleteText").val("");
            });
        }
    });
});

我一直在尝试这段代码,但我得到的是导致错误的数量的空值。那么如何从选定的行中精确获取所选ProductName和Quantity的数据?

我基本上想要得到这样的东西:

var data = { prodName: $("#selectedRowCell1")}

所以我可以把它传递给我班上的方法并更新数据库。

此外,是否可以获取不同表的当前Id并将其插入另一个表+ 1.这样的事情:

Select id from Details
then
Update Products set detailId = Details.id + 1

?我知道这不起作用,因为我已经尝试过了。这样的事情甚至可能吗?

1 个答案:

答案 0 :(得分:1)

首先,这些应该是单独的点击事件,不要在ajax回调中定义点击事件。这就是您使用on()方法的原因。 .on()充当event delegatorselector是绑定到文档static element的{​​{1}}。这意味着,我们可以将事件绑定到此父元素,如果作为第二个参数提供,它们的子节点将委托给它们。

on page load and not after

此处,问题是如何获取 $("#addToDisplay").click(function (event) { //nothing to change here, omitted for length }); 。根据您的定义,产品数据是单击productData类元素时行中的前两列。我们来做吧。

.remove