Forum
Arkadaşlar
gridviewimde bir buton var.butona tıklayınca başka bir tablodan
veri çekip küçük bir pencerede ekrana getirmek istiyorum.ancak
butona basarken hata alıyorum.
hata şu :
Index was out of
range. Must be non-negative and less than the size of the collection.
Parameter name:
index
Şu satıra
konumlanıyor :
int code =
Convert.ToInt32(Gridview1.DataKeys[index].Value.ToString());
protected void
Gridview1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if
(e.CommandName.Equals("detail"))
{
int index =
Convert.ToInt32(e.CommandArgument);
int code =
Convert.ToInt32(Gridview1.DataKeys[index].Value.ToString());
IEnumerable<DataRow>
query = from i in dt.AsEnumerable()
where
i.Field<int>("AId").Equals(code)
select i;
DataTable
detailTable = query.CopyToDataTable<DataRow>();
DetailsView1.DataSource
= detailTable;
DetailsView1.DataBind();
System.Text.StringBuilder
sb = new System.Text.StringBuilder();
sb.Append(@"<script
type='text/javascript'>");
sb.Append("$('#currentdetail').modal('show');");
sb.Append(@"</script>");
ScriptManager.RegisterClientScriptBlock(this,
this.GetType(),
"ModalScript",
sb.ToString(), false);
}
tablomda veri var.
Bu satırı kodunuza ekleyip gelen değeri inceleyin.
MessageBox.Show(Gridview1.DataKeys[index].Value.ToString());
int code = Convert.ToInt32(Gridview1.DataKeys[index].Value.ToString());
Yanlış hatırlamıyorsam ,
int code = Convert.ToInt32(Gridview1.DataKeys[index].Value.ToString()); kısmı
int code = Convert.ToInt32(GridView1.DataKeys(row.RowIndex).Value); şeklinde olmalı
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com