MVC ile veritabanında tek tabloda tutmuş olduğumuz kategori ve alt kategorileri listeleme ile ilgili bilgiye makalenin devamından ulaşabilirsiniz.
MVC ile kategori ve altkategorileri listeleme
Bu örneğimizde basit bir entityframework oluşturup kullandık şimdi sırasıyla işlemlerimizi görelim öncelikle Myql veritabanı kullanıyoruz örneğimizde category tablosuna ait create sql’ine aşağıdaki koddan ulaşabilirsiniz.
Category tablosu sql create sorgusu
1 2 3 4 5 6 7 8 9 10 11 | CREATE TABLE category ( Id int(11) NOT NULL, Name varchar(250) DEFAULT NULL, Image varchar(250) DEFAULT NULL, Date datetime DEFAULT NULL, CatId int(11) DEFAULT NULL, Order int(11) DEFAULT NULL, Count int(11) DEFAULT NULL, Seo varchar(255) DEFAULT NULL, PRIMARY KEY (Id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; |
CategoriesController Kontrolüne ait kod
C# Kodu
1 2 3 4 5 6 | public ActionResult Index() { newsEntities1 db = new newsEntities1(); var category = db.categories.ToList(); return View(category); } |
Index.cshtml sayfası kodları
Normalde Category tablomuzda daha fazla alan yer almakta ama kodlarla kafanızı karıştırmamak için sadece Name alanını ekrana bastırdım siz geri kalanları sayfaya ekleyerek pekiştirebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <table> <tr> <th> @Html.DisplayNameFor(model => model.Name) </th> </tr> @foreach (var item in Model.Where(u => u.CatId == 0)) { <tr> <td> <strong>@Html.DisplayFor(modelItem => item.Name)</strong> </td> </tr> foreach (var subItem in Model.Where(u => u.CatId == item.Id)) { <tr> <td> <i>@Html.DisplayFor(modelItem => subItem.Name)</i> </td> </tr> } } </table> |
Üstteki koddada görmüş olduğunuz gibi ilk foreach döngümüzde Category tablosunda Catid’si 0 olan yani ana kategori olan kategorinin adını ekrana bastırıyoruz ardından foreach içerisindeki ikinci foreach ilede item.Id ile tekrar sorgu yapılarak bu elemana ait alt kategorisi olup olmadığı kontrol ediliyor eğer bu elemanın id’si ile CatId alanımızdaki değerle eşleşen kayıt varsa ekrana bastırılacaktır alt eleman olarak.
Anladığım kadarıyla destek tablosundan firma tablosuna bir ilişki oluşturmuşsunuz ve firma listesinden seçtiğiniz firmaid değerine göre seçimin sağlanmasını istiyorsunuz eğer bu şekilde değilse istediğiniz şeyi net olarak açıklayabilirseniz daha iyi yardımcı olabilir ama eğer bir firma listesinden seçim yaptırmak ve varolan seçimler içinde firma seçimini sağlamak içinde bir select elementine listeyi doldurun ve value değerine şirket değerinizi set ederseniz sorun kalmayacaktır ama dediğim gibi ne yapmak istediğinizi net açıklarsanız ihtiyacınızı tam olarak karşılayacak bir çözüm üretebiliriz.
Murat bey şöyle bir sorum olacak; veri tabanında ilişk,li tablolarım var,
Örn firma ve destek adlı 2 tablom var tablolar için MVC de contorollerları ve bunlara ait wiewleri oluşturuyorum , fakat şöyle birşey yapmam gerekiyor destek tablosunun wiewinde firma tablosu içerisinden bir alanı çağırmam gerek yardımcı olursanız çok çok makbul geçeçek içinden çıkamadım bir türlü.
Merhabalar. Konuyu güzel anlatmışsınız. Keşke daha detaylı bir anlatım tercih etseydiniz. Örneğin Kategoriyi Ekleme, Listeleme, Dropdownlist içinde listeme, Düzenleme, Silme vb. keşke bu şekilde anlatsaydınız. Yukarıdaki anlatımı kendim çok basit bir şekilde yapabiliyorum. Hatta ekleme işlemlerini de yapabiliyorum. Ancak kullandığım yol biraz uzun ve yorucu. İnternette araştırdığımda konu hep eksik anlatılmış. Diyebilirsiniz ki her şeyi beklemeyin, biraz kendiniz yapın diye. Zaten yapabiliyorum. Ancak daha basit bir yapı araştırıyordum. Ne yazık ki bulamadım :). Yine de emeğinize sağlık. Paylaşım için teşekkür ederim.
Merhaba,
Eleştiri için çok teşekkür ederim. Bu makaleyi ilk programlama yıllarında yazdığımdan eksik olduğunun şuan farkedebiliyorum yeni makalelerimi daha dolu dolu yazmaya çalışıyorum.