Forum

Asp.Net gridviewdek...
 
Bildirimler
Hepsini Temizle

Asp.Net gridviewdeki kolonlarda ilişkili kaydın ismini gösterme

9 Yazılar
2 Üyeler
0 Reactions
713 Görüntüleme
(@OguzhanDemir)
Gönderiler: 13
Eminent Member
Konu başlatıcı
 

db deki category tablom ile içerik tablomun id leri ilişkili. Yani Category tablomdaki id ile Content tablomun içindeki kategory id ilişkili.

Content tablomda verileri çekerken kategori id sinide çekmek zorundayım ve bu id lerde sayı yerine kategorının ismi çıkmalı ama yapamadım bir türlü

 

 

 

Repeaterda Böyle bir yol izlemiştim ve category id sini isim olarak göstermişti : 

lblcat.Text = entity.Category.Name; 

 
Gönderildi : 27/04/2015 16:02

(@eravse)
Gönderiler: 1753
Üye
 

Eğer Entity.Category.Id ile ID gelmiyor ise Lazy loading kapalı olabilir ki siz ismi çekiebiliyorsunuz. Sorun yaşadığınız kodu paylaşırsanız yardımcı olmaya çalışayım.

 

Saygılarımla 

 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 27/04/2015 16:12

(@OguzhanDemir)
Gönderiler: 13
Eminent Member
Konu başlatıcı
 

Repeaterda aynı işlemi yaptım çalışmıştı ordaki kod onun kodu örnek olsun diye yazdım.

 

Benim sorunum gridviewde ki categoryid yi çektiğim alanda bana id yi değilde o id deki ismi göstermesi.

 

 

 
Gönderildi : 27/04/2015 16:22

(@eravse)
Gönderiler: 1753
Üye
 

Tamam bende buradan bahsedıyorum sız label a set ettıgınız kodu gondermıssınız bır grıdı doldurdugunuz ve almak ıstedıgınız yerı ısaretleyerek tum kodu paylasın cozmeye calısalım

 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 27/04/2015 16:42

(@OguzhanDemir)
Gönderiler: 13
Eminent Member
Konu başlatıcı
 
 aspx sayfamdaki gridview kodları
 
<asp:GridView ID="GridView1" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound"s OnRowCreated="GridView1_RowCreated" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="10" DataKeyNames="id"  OnRowCommand="GridView1_RowCommand" runat="server" AllowPaging="True">
            <RowStyle CssClass="tablo" />
            
             <Columns>
                <asp:BoundField DataField="CategoryId" HeaderText="Kategori İsmi" SortExpression="CategoryId" />
                 <asp:BoundField DataField="SubCategoryId" HeaderText="Alt Kategori İsmi" SortExpression="SubCategoryId" />
                <asp:BoundField DataField="Name"  HeaderText="İsim" SortExpression="Name" />
                <asp:BoundField DataField="StatusTypeId"  HeaderText="StatusTypeId" SortExpression="StatusTypeId" />
               
                 <asp:ButtonField CommandName="Guncelle" ButtonType="Image" ImageUrl="~/Guncelle.jpg" />
                 <asp:ButtonField CommandName="Sil" ButtonType="Image"  ImageUrl="~/sil.jpg" />
                 
            </Columns>
        </asp:GridView>
 
 
 
 
 
Burdada cs sayfasındaki gridviewin içini doldurduğum kodlar
 
DALL.OGUZHANEntities db = new DALL.OGUZHANEntities();
            List<DALL.Content> kayit = db.Contents.ToList();
            GridView1.DataSource = kayit;
            GridView1.DataBind(); 
 
 
 
 
 
Aspx sayfasındaki ilk çektiğim categoryid kayıdı Category tablosundaki id ile ilişkili ve bende çektiğim category id kayıdında ilişkili kayıdın isminin gözükmesini istiyorum. 
 
Gönderildi : 27/04/2015 16:53

(@OguzhanDemir)
Gönderiler: 13
Eminent Member
Konu başlatıcı
 

Repeaterda Böyle bir yol izlemiştim ve istediğimi almıştım 

aspx sayfası

 

 <asp:Repeater ID="rpt1" OnItemCommand="rpt1_ItemCommand" OnItemDataBound="rpt1_ItemDataBound" runat="server">

                          <ItemTemplate>

                              <tr>

                                  <td><asp:Label ID="lblcat" runat="server"></asp:Label></td>

                                  <td><asp:Label ID="lblsub" runat="server" ></asp:Label></td>

                                  <td><asp:Label ID="lblisim" runat="server" Text='<%#Eval("Name") %>'></asp:Label></td>

                                  <td><asp:Label ID="lblstat" runat="server"  /></td>

                                  <td style="text-align:center; " ><a href='ContentEdit.aspx?id=<%#Eval("id") %>&name=cont' ><img src="Guncelle.jpg" /></a></td>

                                  <td style="text-align:center;"><a href='?id=<%#Eval("id") %>&name=sil' onclick="return silOnayla();" ><img src="sil.jpg" /></a></td>

                                        </tr>

         </ItemTemplate>

                      </asp:Repeater> 

 

 

cs Sayfasıda bu şekilde :

 

if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)

            {

                DALL.Content entity = e.Item.DataItem as DALL.Content;

                CheckBox chstat = e.Item.FindControl("chstat") as CheckBox;

                Label lblstat = e.Item.FindControl("lblstat") as Label;

                if (entity.StatusTypeId == 1)

                {

                    lblstat.Text = "Aktif";

                }

                else

                {

                    lblstat.Text = "Pasif";

                }

                Label lblcat = e.Item.FindControl("lblcat") as Label;

                Label lblsub = e.Item.FindControl("lblsub") as Label;

                lblcat.Text = entity.Category.Name;

                lblsub.Text = entity.SubCategory.Name;

            }

        } 

 
Gönderildi : 27/04/2015 16:55

(@eravse)
Gönderiler: 1753
Üye
 

List<DALL.Content> kayit = db.Contents.ToList(); kısmını

 

var kayit = db.Contents.Include("Category").ToList(); seklinde deneyin olmaz ıse bır linq join yazmanız gerekecek. eger content icinde Category Id Entity Seklinde relation ise

 

 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 27/04/2015 17:19

(@OguzhanDemir)
Gönderiler: 13
Eminent Member
Konu başlatıcı
 

Sorunumu çözdüm belki başkalarına yardımcı olur 

 db imdeki Name alanını e.row.cells[1] ile eşitleyince artık id yi değil ismi gösteriyor 

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

          {

              if (e.Row.RowType == DataControlRowType.DataRow)

              {

                  DALL.Content db = e.Row.DataItem as DALL.Content;

                 e.Row.Cells[1].Text = db.SubCategory.Name;

                 e.Row.Cells[0].Text = db.Category.Name;

                 if (db.StatusTypeId == 1)

                 {

                     e.Row.Cells[2].Text = "Aktif";

                 }

                 else

                 {

                     e.Row.Cells[2].Text = "Pasif";

                 }

              }

          } 

 
Gönderildi : 27/04/2015 17:54

(@eravse)
Gönderiler: 1753
Üye
 

Blgilendirme ve geri dönüş için çok teşekkürler

saygılarımla  

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 11/05/2015 14:41

Paylaş: