Cara akses .Net elemen pada halaman Master dari halaman Konten?
Adalah mungkin untuk mengakses sebuah elemen pada halaman Master dari halaman yang dimuat dalam ContentPlaceHolder
untuk master?
Saya memiliki sebuah ListView yang berisi daftar orang-orang's nama-nama dalam area navigasi pada halaman Master. Saya ingin update ListView setelah seseorang telah ditambahkan ke tabel yang ListView adalah data yang pasti. The ListView
saat ini saya tidak update's nilai-nilai sampai cache reloaded. Kami telah menemukan bahwa hanya kembali menjalankan ListView.DataBind()
akan update listview's isi. Kita belum mampu untuk menjalankan ListView.DataBind()
pada halaman yang menggunakan halaman Master.
Di bawah ini adalah contoh dari apa yang ingin saya lakukan tapi kesalahan kompilator kata
"PeopleListView tidak ada dalam konteks saat ini"
SIG.guru - di Mana berada ListView
...<asp:ListView ID="PeopleListView"...
GISInput_People.aspx - Menggunakan GIS.guru sebagai it's master page
GISInput_People.aspx.cs
AddNewPerson()
{
// Add person to table
....
// Update Person List
PeopleListView.DataBind();
...
}
Apa yang akan menjadi cara terbaik untuk mengatasi masalah seperti ini di C# .Net?
Saya percaya anda bisa melakukan ini dengan menggunakan ini.Master.FindControl atau sesuatu yang mirip, tetapi anda mungkin tidak't - membutuhkan konten halaman untuk tahu terlalu banyak tentang struktur halaman master.
Saya akan menyarankan metode lain, seperti menembakkan sebuah acara di area konten yang master bisa mendengarkan dan kembali mengikat ketika dipecat.
Dengan asumsi kontrol yang disebut "PeopleListView" di halaman master
Tapi @palmsey adalah lebih benar, terutama jika halaman anda bisa memiliki kemungkinan lebih dari satu halaman master. Memisahkan mereka dan menggunakan sebuah acara.
Opsi 1 :anda dapat membuat publik milik anda halaman master control
akses pada konten halaman seperti
Opsi 2: pada Master page:
pada Halaman Konten:
pilihan 3 : anda dapat membuat beberapa umum metode yang bekerja untuk anda
ini pendekatan ini tidak begitu berguna tetapi hal ini membantu jika anda hanya ingin menggunakan beberapa terbatas dan kontrol yang telah ditetapkan
Satu berpikir untuk diingat adalah sebagai berikut ASP.NET direktif.
BACA Referensi
Ini akan membantu anda ketika referensi ini.Guru dengan menciptakan strongly typed referensi untuk halaman master. Anda kemudian dapat referensi anda ListView tanpa perlu COR.
anda dapat mengakses dengan kode ini.Master.FindControl(ControlID) yang mengendalikan anda inginkan. Mengembalikan referensi dari kontrol, sehingga perubahan yang efektif. tentang menembakkan sebuah acara yang tidak bisa mungkin setiap situasi.
Dengan asumsi anda master page bernama MyMaster:
Edit: sejak PeopleListView akan dinyatakan dilindungi secara default, anda akan perlu untuk mengubah ini ke publik, atau membuat fasilitas umum wrapper sehingga anda dapat mengaksesnya dari halaman anda.