mimtiyaz Ответов: 1

Как найти дочернюю gridivew внутри родительской gridview с помощью ajax / jquery


Привет

У меня asp.net GridView в "gvCustomers", который отображает список клиентов, в то же время я хочу, чтобы отобразить список (одиночных / множественных) заказ(ы), размещенные на соответствующих клиентов.

Моя проблема в том, что я не могу найти gridview "gvItems", помещенный внутри "gvCustomers", используя jQuery

Предложения будут оценены по достоинству.

Спасибо

Что я уже пробовал:

function LoadOrderItems(orderId) {
            var row1;
            $.ajax({
                type: "POST",
                url: "manageOrders.aspx/PopulateItems",
                data: '{orderId: "' + orderId + '" }',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: "true",
                beforeSend: function () {
                    /**/
                },
                success: function (response) {

                    var xmlDoc1 = $.parseXML(response.d);
                    var xml1 = $(xmlDoc1);
                    var orders1 = xml1.find("dsItems");
                    var html1 = '<table id="gvItems">';

                    if (row1 == null) {
                        row1 = $("#<%=gvItems.ClientID %> tr:last-child").clone(true);
                    }

                    $("#<%=gvItems.ClientID %> tr").not($("#<%=gvItems.ClientID %> tr:first-child")).remove();
                    html1 += $("#<%=gvItems.ClientID %>").html();
                    if (orders1.length > 0) {
                        $.each(orders1, function () {
                            html1 += "<tr>";

                            $(row1).find("#lblProduct").html($(this).find("prod_name").text());
                            
                            $("#<%=gvItems.ClientID %>").append(row1);
                            row1 = $("#<%=gvItems.ClientID %> tr:last-child").clone(true);
                            html1 += $(row1).html();
                            html1 += "</tr>";
                        });
                    } else {
                        $("#lblRecordCount").text("");

                        var empty_row = row1.clone(true);
                        $("td:first-child", empty_row).attr("colspan", $("td", row1).length);
                        $("td:first-child", empty_row).attr("align", "center");
                        //$("td:first-child", empty_row).attr("style", "background-color:#FFE6E3");
                        $("td:first-child", empty_row).attr("class", "well");
                        $("td:first-child", empty_row).html("No Data Available");
                        $("td", empty_row).not($("td:first-child", empty_row)).remove();
                        $("#<%=gvItems.ClientID %>").append(empty_row);
                    }
                    html1 += '</table>';
                },
                failure: function (response) {
                    alert(response.d);
                },
                error: function (response) {
                    alert(response.d);
                }
            });
        }

1 Ответов

Рейтинг:
2

Richard Deeming

Ваши родители GridView будет иметь несколько строк. Если вы поместите элемент управления внутрь ItemTemplate в TemplateField, будет один экземпляр этого элемента управления для каждой строки в родительской сетке.

Поэтому спрашивать, каков идентификатор клиента этого элемента управления, не имеет смысла. Для каждого экземпляра элемента управления будет существовать разный идентификатор клиента. Вам нужно будет найти другой способ идентификации вложенной таблицы - например, добавив в нее определенный класс CSS.

Также не имеет смысла иметь вложенный файл GridView если только вы не привязываете вложенную сетку к серверу. Если вы привязываете вложенную сетку к клиенту с помощью AJAX, просто добавьте пустую сетку. <table> вместо этого перейдите к шаблону элемента.