Asp.net mvc de bir küçük uygulama yapıyorum. Amacım, butona basıldığında sayfamdaki table ın içerisini gelen veri ile doldurmak ve her bir item için sil butonu oluşturmak. Ardından sil butonuna tıkladığımda itemı table dan silmek. Burada sil butonuna basıldığında çalışması gereken fonksiyonu init edemiyorum. Kodlarım şu şekilde,

    <div class="row form-group">
        <div class="col-md-2">
            <button type="submit" id="getProducts" class="form-control">Getir</button>
        </div>
    </div>
    <div class="row form-group">
        <div class="col-md-8">
            <table class="table" id="product">
                <thead>
                    <tr>
                        <td>Ürün</td>
                        <td>Fiyat</td>
                        <td>Adet</td>
                        <td>İşlemler</td>
                    </tr>
                </thead>
                <tbody>
                </tbody>
            </table>
        </div>
    </div>

<script>
$(document).ready(function () {
    $("#getProducts").click(function () {
        bindToTable();
    });

    function bindToTable() {
        $.ajax({
            url: '/Home/GetAllProducts',
            success: function (data) {
                var tbody = "";
                $.each(data, function (i, item) {
                    tbody += "<tr>";
                    tbody += "<td>" + data[i].Name + "</td>";
                    tbody += "<td>" + data[i].Cost + "</td>";
                    tbody += "<td>" + data[i].Count + "</td>";
                    tbody += "<td><a href='#' id='deleteItem' data-item-id='"+data[i].Id+"'><i class='glyphicon glyphicon-trash'></i></a></td>";
                    tbody += "</tr>";
                });
                $("#product tbody").append(tbody);
                addDeleteButton();
            }
        })
    }

    function addDeleteButton() {
        $("#deleteItem").unbind("click", DeleteToTable);
        $("#deleteItem").bind("click", DeleteToTable);
    }

    function DeleteToTable() {
        var id = $(this).data("item-id");
        alert(id);
    }
});
</script>

Burada şöyle bir sıkıntı ile karşılaşıyorum. İlk item ın sil butonuna bastığım zaman id doğru bir şekilde bana geliyor. Ancak ikinci üçüncü ve diğer butonlarda denediğimde işlem yapmıyor. Yardımlarınızı bekliyorum...

soruldu: 12 Tem '14, 03:17

emax_64's gravatar image

emax_64
64590102101
cevap kabul oranı: 20%


tbody += "<td><a href='#' id='deleteItem' data-item-id='"+data[i].Id+"'><i class='glyphicon glyphicon-trash'></i></a></td>";

burada

id='deleteItem'

demişsiniz; bunun anlamı tüm delete butonları için aynı id yi tanımlamak

$("#deleteItem")

ile id ye gore secmişsiniz; bunun anlamı ise, her butonun id si aynı oldugundan her zaman ilk karşılaştıgı id ye gore div i seçmek. yani hep ilk delete butonu yakalıyorsunuz.

delete butonunu id ye gore degil de class a gore secerseniz sorun cozulur. Örneğin kodlarınız aşagıdaki gibi olabilir.

...
tbody += "<td><a href='#' class='deleteItem' data-item-id='"+data[i].Id+"'><i class='glyphicon glyphicon-trash'></i></a></td>";
...

function addDeleteButton() {
    $(".deleteItem").unbind("click", DeleteToTable);
    $(".deleteItem").bind("click", DeleteToTable);
}

TAVSİYE

Öncelikle kodlarınız temiz ve anlaşılır. Böyle kendiniz grid yazmanız, çok zamanınızı alabilir. Çünkü ilerde, sayfalama ve filtreleme gerekecek. Özelliklede sayfalamada performans sıkıntısı olmaması için db den verilerin cekilirkende sayfalı biçimde cekilmesi gerekecek.

Grid.Mvc kullanmanızı tavsiye ederim. Veri tiplerini algılayan ve IQueryable ile calışsan bir grid. Ajax desteğide var. Tabi yine de tüm bunları yazarım diyorsanız sorun yok.

permanent link

cevaplandı: 12 Tem '14, 03:38

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

değiştirildi: 12 Tem '14, 03:48

Cevabınız için tşkler. Sorunsuz çalışıyor. Tavsiyeler için ise şunları söylemek isterim, aslında proje geliştirirken kendo grid kullanıyorum. Ancak bazı ekranlarda çok fazla veri olmayacağını bildiğim için table kullanmam gerekiyor performans açısından.

(12 Tem '14, 03:44) emax_64 emax_64's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×137
×81

Soruldu: 12 Tem '14, 03:17

Görüntüleme: 818 kez

Son güncelleme: 12 Tem '14, 03:54

powered by BitNami OSQA