PDA

View Full Version : سوال: از بین نرفتن literal بعد از refresh شدن صفحه



forodo
چهارشنبه 09 مهر 1393, 23:27 عصر
سلام
من وقتی دکمه رو کلیک می کنم یه متنی نمایش داده میشه که داخل literal هستش ولی وقتی صفحه رو رفرش می کنم اون متن از بین نمیره.
اون پاک نمی شه هیچ کدهای داخل رویداد کلیک دکمه هم اجرا می شه.
یعنی اگه من 5 بار صفحه رو رفرش کنم 5سطر داخل بانک اطلاعاتی ذخیره می شه.
چی می گه؟ :گیج:
protected void Button1_Click(object sender, EventArgs e)
{
string[] input = new string[] { "Subject", "SendDate", "SendTime", "SummaryOfTraining", "TotalTraining", "tblTypeOfTrainingID", "DayOfWeekPersian" };
string[] param = new string[] { txtSubject.Text, clsDateAndTime.GhamariToShamsi(), clsDateAndTime.TimeEightCharacter(), CKEditorControl1.Text, CKEditorControl2.Text, ddlTypeOfTraining.SelectedValue.ToString(), clsDateAndTime.DayOfWeekPersian() };
clsDatabaseCode.InsertIntoTable("tblTraining", input, param);
Literal1.Text = "اطلاعات با موفقیت ثبت شد";
}

fakhravari
چهارشنبه 09 مهر 1393, 23:57 عصر
Response.Redirect(adress page)

forodo
پنج شنبه 10 مهر 1393, 00:08 صبح
رفرش خود مرورگر رو که می زنم اینطوری می شه.
صفحه دیگه ای هم نمی خوام باز کنم. فقط وقتی روی دکمه کلیک می شه اطلاعات کنترلها داخل بانک ذخیره بشه.

fakhravari
پنج شنبه 10 مهر 1393, 07:47 صبح
ببنید بهترین راه کنترل رکویست زدن به صفحه است با یک کوری استرینگ
مثلا زمان ثبت صفحه میشه aspx?oki=1
literal عوض بشه

forodo
پنج شنبه 10 مهر 1393, 13:44 عصر
توی رویداد دکمه اینو نوشتم که این همون صفحه ای که توش هستم رو دوباره باز می کنه:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Manager.aspx?id=1");
}
توی رویداد لود صفحه هم اینو نوشتم:
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (Request.QueryString["id"].ToString() == "1")
{
Literal1.Text = "اطلاعات با موفقیت ثبت شد";
}
}
catch (Exception)
{

}
}
حالا وقتی رفرش خود مرورگر رو می زنم آدرس صفحه Manager.aspx?id=1 هستش که این یعنی اون لیترال هم هست.
چیکار کنم که وقتی رفرش صفحه رو می زنم اون ?id=1 از انتها پاک بشه یا به عبارتی صفحه خام بیاد بالا؟

ahmad156
جمعه 11 مهر 1393, 09:47 صبح
چه نیازی هست Redirect کنین به یه صفحه دیگه؟
شما توی PageLoad صفحه همیشه مقدار لیترال رو پاک کنین و توی event مربوط به Button لیترال رو مقداردهی کنین

forodo
جمعه 11 مهر 1393, 09:59 صبح
چه نیازی هست Redirect کنین به یه صفحه دیگه؟
شما توی PageLoad صفحه همیشه مقدار لیترال رو پاک کنین و توی event مربوط به Button لیترال رو مقداردهی کنین
اول اینکار رو کرده بودم ولی وقتی رفرش خود مرورگر رو می زنم متن لیترال پاک نمیشه هیچ کدهای دکمه که کارش ذخیره اطلاعات داخل بانک هست هم دوباره اجرا می شه. یعنی 5بار رفرش برابر با اضافه شدن 5 سطر به بانک اطلاعاتی است.

ahmad156
جمعه 11 مهر 1393, 10:38 صبح
یعنی شما عملیات DataBase تون رو براساس متن پیغامتون انجام میدین؟؟؟؟؟؟؟؟!!!!!!!!!

forodo
جمعه 11 مهر 1393, 11:18 صبح
من اینجوری نوشته بودم که مشکلی که عرض کردم بوجود میاد:
protected void Button1_Click(object sender, EventArgs e)
{
string[] input = new string[] { "Subject", "SendDate", "SendTime", "SummaryOfTraining", "TotalTraining", "tblTypeOfTrainingID", "DayOfWeekPersian" };
string[] param = new string[] { txtSubject.Text, clsDateAndTime.GhamariToShamsi(), clsDateAndTime.TimeEightCharacter(), CKEditorControl1.Text, CKEditorControl2.Text, ddlTypeOfTraining.SelectedValue, clsDateAndTime.DayOfWeekPersian() };
clsDatabaseCode.InsertIntoTable("tblTraining", input, param);
Literal1.Text = "اطلاعات با موفقیت ثبت شد";
}

protected void Page_Load(object sender, EventArgs e)
{
Literal1.Text = "";
}

ahmad156
جمعه 11 مهر 1393, 11:25 صبح
شما بعد از عملیات Insert ، تمام TextBox ها رو خالی کنین و قبل از Insert هم بررسی کنین که خالی نباشه

forodo
جمعه 11 مهر 1393, 11:43 صبح
نشد که بشه:
کنترلها خالی شد ولی وقتی رفرش مرورگر رو زدم با اینکه کنترلها خالی بود همون اطلاعات قبلی رو دوباره داخل بانک ذخیره کرد.
وقتی رفرش می کنم سوال می پرسه که من دکمه Resend رو میزنم.
اگه کاربر هی بخواد اینو بزنه که بانک میترکه.
protected void Button1_Click(object sender, EventArgs e)
{
if (txtSubject.Text.Trim() != "" && CKEditorControl1.Text.Trim() != "" && CKEditorControl2.Text.Trim() != "")
{
string[] input = new string[] { "Subject", "SendDate", "SendTime", "SummaryOfTraining", "TotalTraining", "tblTypeOfTrainingID", "DayOfWeekPersian" };
string[] param = new string[] { txtSubject.Text, clsDateAndTime.GhamariToShamsi(), clsDateAndTime.TimeEightCharacter(), CKEditorControl1.Text, CKEditorControl2.Text, ddlTypeOfTraining.SelectedValue, clsDateAndTime.DayOfWeekPersian() };
clsDatabaseCode.InsertIntoTable("tblTraining", input, param);
txtSubject.Text = CKEditorControl1.Text = CKEditorControl2.Text = "";
Literal1.Text = "اطلاعات با موفقیت ثبت شد";
}
}

ahmad156
جمعه 11 مهر 1393, 11:59 صبح
ببخشید منظورتون رو بد متوجه شدم.

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["update"] = Server.UrlEncode(DateTime.Now.ToString());
}
}

protected void Page_PreRender(object sender, EventArgs e)
{
ViewState["update"] = Session["update"];
}

protected void Button1_Click(object sender, EventArgs e)
{
if (Session["update"] == ViewState["update"])
{
//do inert
Session["update"] = Server.UrlEncode(DateTime.Now.ToString());
}
else
{
//failed
}
}

forodo
جمعه 11 مهر 1393, 15:37 عصر
نشد.
من می خوام وقتی کاربر اطلاعات رو وارد کرد و دکمه ارسال رو زد اطلاعات داخل بانک ثبت و کنترلها خالی بشه و یک پیغام مبنی بر ثبت اطلاعات وارده به کاربر نمایش داده بشه.
حالا اگه کاربر دوباره اطلاعات رو وارد کرد و دکمه ارسال رو زد دوباره اطلاعات داخل بانک ثبت و کنترلها خالی بشه و پیغام هنوز نمایش داده بشه. و اگر اروری بود خوب پیغام حذف و مثلاً بگه فلان کنترل رو پر کن.
اگر صفحه رو کاربر با رفرش مرورگر رفرش کرد صفحه کاملاً خام شود. یعنی اون پیغام چه ارور چه ثبت اطلاعات پاک شود و اطلاعات کنترلها نیز پاک شود.
کدهای شما را نوشتم ولی اصلاً کدهای ثبت اطلاعات داخل بانک عمل نمی کند.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["update"] = Server.UrlEncode(DateTime.Now.ToString());
}
}

protected void Page_PreRender(object sender, EventArgs e)
{
ViewState["update"] = Session["update"];
}

protected void Button1_Click(object sender, EventArgs e)
{
if (Session["update"] == ViewState["update"])
{
string[] input = new string[] { "Subject", "SendDate", "SendTime", "SummaryOfTraining", "TotalTraining", "tblTypeOfTrainingID", "DayOfWeekPersian" };
string[] param = new string[] { txtSubject.Text, clsDateAndTime.GhamariToShamsi(), clsDateAndTime.TimeEightCharacter(), CKEditorControl1.Text, CKEditorControl2.Text, ddlTypeOfTraining.SelectedValue, clsDateAndTime.DayOfWeekPersian() };
clsDatabaseCode.InsertIntoTable("tblTraining", input, param);
txtSubject.Text = CKEditorControl1.Text = CKEditorControl2.Text = "";
Literal1.Text = "اطلاعات با موفقیت ثبت شد";
Session["update"] = Server.UrlEncode(DateTime.Now.ToString());
}
}