PDA

View Full Version : حفظ مقادیر سشن و ... در صفحات جدید دیتا گرید



faramarz_s
دوشنبه 03 فروردین 1383, 12:30 عصر
در دیتا گریدی با امکان Paging زمانی که به صفحات جدید دیتا گرید می روم( NewPageIndex) شسن ها و نیز دسترسی به کنترلهای درون دیتا گرید مختل می شود.نمونه برنامه :

private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//DataGrid1.DataKeys[(int)e.Item.ItemIndex]=-1;
//Label3.Text=DataGrid1.DataKeys[(int)e.Item.ItemInd ex].ToString();
//DataGrid1.DataKeys[(int)e.Item.ItemIndex] = 1;'it is read only
Session["NewsId"]=DataGrid1.DataKeys[(int)e.Item.ItemIndex];

/**/
if (((DropDownList)e.Item.FindControl("DropDownList1")).SelectedValue == "edit")
{
Response.Redirect("EditNews.aspx");
}
if (((DropDownList)e.Item.FindControl("DropDownList1")).SelectedValue == "first")
{
SetInDefaultWebForm();
Response.Redirect("../Default.aspx");
}
if (((DropDownList)e.Item.FindControl("DropDownList1")).SelectedValue == "del")
{
DelNews();
//Response.Redirect("DelNews.aspx");
}
if (((DropDownList)e.Item.FindControl("DropDownList1")).SelectedValue == "DelF")
{
RemoveFromDefaultWebForm();
Response.Redirect("../Default.aspx");
}
if (((DropDownList)e.Item.FindControl("DropDownList1")).SelectedValue == "َAdd")
{
Response.Redirect("AddNews.aspx");
}
}

private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEvent Args e)
{
DataGrid1.CurrentPageIndex=e.NewPageIndex;
bindGrid1();

/*try
{
if ((DataGrid1.PageCount - e.NewPageIndex) > 0)
{
DataGrid1.CurrentPageIndex=e.NewPageIndex;
//Session["NewsId"]=DataGrid1.DataKeys[0];
bindGrid1();
}
}
catch (Exception e01)
{
Label3.Text = e01.Message.ToString();
}*/
}

عنایت بفرمایید به خطای اول:

Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

Source Error:


Line 169: //Label3.Text=DataGrid1.DataKeys[(int)e.Item.ItemInd ex].ToString();
Line 170: //DataGrid1.DataKeys[(int)e.Item.ItemIndex] = 1;'it is read only
Line 171: Session["NewsId"]=DataGrid1.DataKeys[(int)e.Item.ItemIndex];
Line 172:
Line 173:


اگر احیانا سشن را کامنت کنیم:

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:


Line 172:
Line 173: /**/
Line 174: if (((DropDownList)e.Item.FindControl("DropDownList1")).SelectedValue == "edit")
Line 175: {
Line 176:


برای حفظ مقادیر سشن و کنترلهای دورن دیتا گرید و رفع مشکل حاضر چه باید کرد؟
تشکر :roll:

Farhad.B.S
دوشنبه 03 فروردین 1383, 20:22 عصر
اول برای تست ، تو همین صفحه با استفاده از کد زیر تعداد آیتم های موجود رو بیینید:


Response.Write(DataGrid1.DataKeys.Count);

عدد حاصل از کد بالا صفر هستش ؟
-------------------------------------------
چرا این مقدایر رو از دیتا گرید میخونید ؟ چرا اونها رو از یه دیتاست که منبع تغذیه دیتاگرید میتونه باشه بدست نمیارید ؟

faramarz_s
چهارشنبه 05 فروردین 1383, 11:38 صبح
10
خیر عدد حاصل از کد بالا 10 هست!


چرا این مقدایر رو از دیتا گرید میخونید ؟ چرا اونها رو از یه دیتاست که منبع تغذیه دیتاگرید میتونه باشه بدست نمیارید ؟منظور شما مقدیر دراژ داون لیسته؟
اگر بله:چون این مقادیر اصولا در دیتا بیس نیست که لزومی به بایند داشته باشد و اگر دقت کنید مشخصه در این دیتا گرید کاربر به ازای هر سطر دیتا 4 امکان دارد(بخش مدیریت وب سایت هستش) در ضمن من راههای دیگر را هم انتخاب کرده ام و با کویری استرینگ اصلا مشکلی ندارم ولی این مطلب لاینحل مونده و برای خودم هم جالبه!
بهر حال تشکر :oops: