C# Gridview Sorunu
-
merhaba arkadaslar gridview kafasina gore davraniyor sebebini bulamadim breakpoint ile sonuca ulasamadim yardim ederseniz sevinirim saolun simdiden.
GridView bu:

Duzenle dedigimde kategori alanini code tarafindan bagliyorum fakat en alttaki resimdeki gibi tek sayili row larda bos geliyor.


row data bound kodu
protected void grdProducts_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowState == DataControlRowState.Edit && e.Row.RowType == DataControlRowType.DataRow) { DropDownList ds = (DropDownList)e.Row.FindControl("ddlCategory"); int ids = Convert.ToInt16(((Label)e.Row.FindControl("LID")).Text); ds.DataTextField = "Name"; ds.DataValueField = "ID"; ds.DataSource = model.Categories.ToList(); ds.DataBind(); var idBynames = model.Products.Where(s => s.ID == ids).FirstOrDefault(); string names = idBynames.CategoryName; var categorys = model.Categories.Where(s => s.Name == names).FirstOrDefault(); ds.SelectedValue = categorys.ID.ToString(); } } -
DataControlRowState.Alternate dene :)
-
manglerman bunu yazdı
DataControlRowState.Alternate dene :)
yok abi yemiyor onu :( nullreferenceexception firlatio
-
eventin "grdProducts_RowDataBound" görünüyor
halbuki "grdProducts_RowEditing" gibi bişey olması lazım :)
ddli onda bind et.
-
manglerman bunu yazdı
eventin "grdProducts_RowDataBound" görünüyor
halbuki "grdProducts_RowEditing" gibi bişey olması lazım :)
ddli onda bind et.
evet :) denedim grdProducts_RowEditing de e.row a ulasamiyorum , rowlara ulasamadan da controlleri bulamam, dropdownlist'in databound da denemistim onda da exception veriyor , model'i code first ile yazdim datasource elle yazmasam direk baglardim entitydatasource. bug var galiba gridview de.
-
manglerman bunu yazdı
DataControlRowState.Alternate dene :)
Bunun gibi bir durum olması gerek. Tek sayılar ve çift sayılar, normal ve alternate diye değişiyor. Sen normal row'da işlem yaparken alternate'de yapamıyorsun gözüküyor.
-
TeRRoR bunu yazdımanglerman bunu yazdı
DataControlRowState.Alternate dene :)
Bunun gibi bir durum olması gerek. Tek sayılar ve çift sayılar, normal ve alternate diye değişiyor. Sen normal row'da işlem yaparken alternate'de yapamıyorsun gözüküyor.
if (e.Row.RowState == DataControlRowState.Edit && e.Row.RowType == DataControlRowType.DataRow) { if ( e.Row.RowState == DataControlRowState.Alternate || e.Row.RowState == DataControlRowState.Normal) { DropDownList ds = (DropDownList)e.Row.FindControl("ddlCategory"); int ids = Convert.ToInt16(((Label)e.Row.FindControl("LID")).Text); ds.DataTextField = "Name"; ds.DataValueField = "ID"; ds.DataSource = model.Categories.ToList(); ds.DataBind(); var idBynames = model.Products.Where(s => s.ID == ids).FirstOrDefault(); string names = idBynames.CategoryName; var categorys = model.Categories.Where(s => s.Name == names).FirstOrDefault(); ds.SelectedValue = categorys.ID.ToString(); } }
kodu degistirdim boyle denedim 2. if breakpoint biraktim ama rowstate i alternate yada normal olarak okumadi if den cikti , rowstate i su anda edit de oldugu icin sanirim boyle yapiyor. rowstate ayni anda 2 secenegide saglayabilirmi, rowstate = normal,alternate,edit,selected,insert .yanlis mi yaziyorum anlamadim cift sayili rowlarda calisiyor -
edit :)
cozdum if'i bu sekidel yapinca calisiyor.
if ((e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit && e.Row.RowType == DataControlRowType.DataRow)
override tarafından 15/Mar/13 22:44 tarihinde düzenlenmiştir
