Jika Anda menggunakan gambar sebagai tombol ketik di gridview, acara perintah baris akan dieksekusi dua kali ketika dipicu. Dikatakan hanya muncul di IE6, IE5, firefox, dll. Tidak ada masalah di IE7 saya masalah. Tampaknya terkait dengan versi IIS. Saya menantikan patch Microsoft.
Saya mengalami masalah sore ini. Acara rowcommand pada gridview dieksekusi dua kali, dan postback juga dieksekusi dua kali. Awalnya saya curiga itu adalah masalah dengan debugger dieksekusi dua kali.
Saya memeriksa kodenya sebanyak n kali dan menghilangkannya kalimat demi kalimat, tetapi tetap tidak ada masalah yang ditemukan. Saya mulai curiga bahwa itu adalah mouse. Saya menangkap paket tersebut dan menemukan bahwa dua permintaan memang terkirim, dan permintaan pertama tidak diproses . Kadang-kadang, saya mengubah jenis tombol dari gambar ke tombol, dan ternyata berhasil. Itu hanya dijalankan sekali. Tampaknya masalahnya hanya terletak pada Imagebutton.
Melalui pencarian Google, saya menemukan banyak orang mengalami masalah ini, dan itu pasti bug asp.net. Mengklik tombol akan mengirim dua permintaan ke iis. Yang pertama kurang dari delapan byte dari yang kedua, menyebabkan permintaan pertama tidak berhasil, dan kemudian akan dikirim lagi permintaan pertama, sebagai berikut Ini adalah solusi pertama.
Saat ini ada dua solusi, tidak ada yang sempurna. Yang pertama adalah menambahkan pernyataan berikut ke acara rowcommand:
if (Permintaan["x"] == null && Permintaan["y"] == null)
Respon.End();
Melalui pernyataan ini, koordinat gambar ditentukan. Jika koordinatnya nol, itu adalah permintaan pertama karena permintaan pertama tidak valid, akhiri.
Yang kedua direkomendasikan oleh Microsoft: cobalah untuk tidak menggunakan tombol gambar di tampilan kisi, tetapi gunakan tautan atau tombol.
<asp:GridView ID="GridView1" runat="server">
<Kolom>
<asp:TemplateField>
<Templat Barang>
<asp:ImageButton runat=server id="ImageButton1" CommandName="Hapus"
ImageUrl="" commandargument='<%# DataBinder.Eval(Wadah,
"Indeks Baris") %>' OnCommand="ImageButton1_Command" />
</Templat Barang>
</asp:TemplateField>
</Kolom>
</asp:GridView>
dilindungi void ImageButton1_Command(pengirim objek, CommandEventArgs e) {
GridView1.DeleteRow(Int32.Parse(e.CommandArgument.ToString()));
}
Tambahkan imagebuttong ke TemplateField dan panggil deleterow di acara tersebut.
Saya tidak tahu apakah ada solusi yang lebih baik. Forum berikut membahas masalah ini secara rinci:
http://www.developersdex.com/asp/message.asp?p=1116&r=4641456&page=2 Hasil pembahasan di halaman pertama adalah: Masalah ini hanya akan terjadi jika jenis tombolnya adalah gambar, yang dapat berupa gambar. skipped Jangan dibaca, ada pembahasan detail dan solusinya di dua halaman berikutnya.
Saya mengalami masalah aneh sepanjang hari ini, dan kepala saya pusing. Kode yang sama sering kali dapat dieksekusi untuk sementara waktu, tetapi tidak untuk sementara, dan hal-hal aneh terus terjadi di vs2005. Saya baru saja mensimulasikan beberapa masalah yang tidak dapat dijalankan pada sore hari di rumah dan berhasil dengan baik! ! Aku akan sakit kepala lagi besok
http://www.cnblogs.com/bluewater/archive/2006/11/21/567871.html