Gerçekleştirmek istediğimiz işlem son derece basit; GridView görüntüleme modunda iken her şey labellarda görüntülenecek ancak herhangi bir satır edit moda geçtiğinde ürünün bağlı olduğu AltKategori ve diğer AltKategoriler DropDownList içerisinde görüntüleniyor olacak ancak ürünün dahil olduğu AltKategori DropDownList'te seçili olarak geliyor olacak, aynı şekilde seçili olan alt kategorinin bağlı olduğu Kategori de başka bir DropDownList'te görüntüleniyor olacak. Anlaşılacağı üzere işlem oldukça basit, ilk olarak GridView'i oluşturduk ardından TemplateField'lar ile istediğimiz işlemi yaptık ve ardından da SqlDataSource kontrolleri ile DropDownList'lere verileri getirip ikisi arasındaki gerekli entegrasyonu sağladık bundan sonra da Bind metodu ile DataBase'den gelen alanı direkt DropDownList'lerin SelectedValue özelliklerine bağladık. Sorunsuz olarak veriler geldi ve ardından sorunsuz olarak herhangi bir satır edit moda geçti ancak Kategori DropDownList'indeki değer değiştikten sonra AltKategori de yenilenmek istediği için ve seçili olan değerlerle Bind metodundan bağlanan değer uyuşmadığı için "Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control" şeklinde bir hata ile karşılaştık.Sorunu şu şekilde çözdük; DataBase'den gelen verileri direkt Bind metodu ile DropDownList'lerin SelectedValue özelliklerine atamaktan vazgeçtik ve DropDownList'lerin yanına birer tane HiddenField attık, ardından da GridView'in RowEditing olayını ele aldığımız metotta aşağıdaki kodları yazıp DataBase'den ID'si gelen Kategori ve AltKategori'lerin DropDownList'lerde seçili olmasını sağladık.
CType(GridView1.Rows(e.NewEditIndex).Cells(5).FindControl("ddlKategoriID"), DropDownList).SelectedValue = CType(GridView1.Rows(e.NewEditIndex).Cells(5).FindControl("HfKategoriID"), HiddenField).Value CType(GridView1.Rows(e.NewEditIndex).Cells(6).FindControl("ddlAltKategori"), DropDownList).DataBind() CType(GridView1.Rows(e.NewEditIndex).Cells(6).FindControl("ddlAltKategori"), DropDownList).SelectedValue = CType(GridView1.Rows(e.NewEditIndex).Cells(6).FindControl("HfAltKategoriID"), HiddenField).Value |
Kodlardan da anlaşılacağı üzere eğitimi VisualBasic.Net dili üzerinden anlatıyorum, kodlardan anlaşılacağı üzere ilk HiddenField'larda depolamış olduğumuz değerleri RowEditing olayında DropDownList'lere atıyoruz arada AltKategori DropDownList'imizin DataBind metodunu bir kez daha çalıştırdık çünkü kategoride varsayılan olarak en üstteki seçili olarak gelmekteydi ve buradaki değişim sonucunda ona bağlı olan AltKategoriler'de değişiyor olmalıdır, bunu sağladıktan sonra ise Kategori için yaptığımız işlemin aynısını bir de AltKategori için gerçekleştirdik ve uygulama sorunsuz olarak çalıştı...
1 yorum:
kardeş eline sağlık makalen için..
aynısını detailsview içinde yaşıyorum , aynı kodları detailsview'a uyarladım fakat atladığım bişeyler olabilir.. detalsview için bi örnek varsa sevinirim .. tşk
Yorum Gönder