PDA

View Full Version : پاک شدن اطلاعات پس از بازگشت به صفحه قبل



elahe1364
پنج شنبه 26 دی 1387, 09:23 صبح
سلام دوستان
من دو تا صفحه دارم. توی صفحه اول با کلیک روی یک دکمه به صفحه دوم میرم و توی صفحه دوم با کلیک روی یک دکمه به صفحه اول بر می گردم. حالا مشکل اینجاست که وقتی از صفحه دوم به صفحه اول بر می گردم تمام اطلاعات text box ها که قبلا وارد شده پاک شده.
با دستور response.redirect بین صفحه ها جابجا میشم. چون میخوام یه مقداری هم توسط query string به صفحه اول برگردونم.
لطفا دوستان کمک کنند. ببخشید من تازه کارم.
با تشکر.

elahe1364
جمعه 27 دی 1387, 21:19 عصر
یعنی هیچکس نمیدونه؟
میخوام ببینم این مشکل برنامه منه یا همیشه همینطوره

r_mehrizi
شنبه 28 دی 1387, 08:53 صبح
اطلاعات صفحه اولي را توي session بريز و در تابع pageload اون بنويس


If Not IsPostBack Then
Try
ReLoad()
Catch ex As Exception
End Try
Private Sub ReLoad()
Dim dt As New test.tbl_motevaliDataTable
Dim dr As test.tbl_motevaliRow = dt.NewRow
dr = Session("Motevali")
txtmo_date.Text = dr.mo_date.ToString.Trim
End If
End Sub

elahe1364
شنبه 28 دی 1387, 18:19 عصر
مرسی ولی من تعداد text box هام خیلی زیاده.
روشی وجود نداره که کلا این اطلاعات پاک نشه؟
اصلا پاک شدن مقادیر باکس ها عادیه یا برنامه من مشکل داره؟

Ahoora_Mazda
شنبه 28 دی 1387, 18:35 عصر
اصلا پاک شدن مقادیر باکس ها عادیه یا برنامه من مشکل داره؟
برنامه شما مشکل دارد. شما نباید از Redirect استفاده کنید. شما نیاز به دکمه هایی دارید که مثل forward و back مرورگر عمل کنند که این کار با جاوا اسکریپت به راحتی انجام میشود.

برای رفتن به صفحه دیگر (forward) :


<input type="button" value="Forward" onclick="javascript:history.go(+1)" class="class1" />


برای برگشت به صفحه قبل (Back):




<input type="button" value="Back" onclick="javascript:history.go(-1)" class="class1" />


البته اگر با redirect به صفحه بعد بروید می توانید با back برگردید.

elahe1364
شنبه 28 دی 1387, 21:13 عصر
ممنون لطف کردید
پس مقداری رو که میخوام از صفحه دوم به صفحه اول برگردونم داخل session بریزم.؟

m.hamidreza
شنبه 28 دی 1387, 22:09 عصر
برنامه شما مشکل دارد. شما نباید از Redirect استفاده کنید.
چه مشکلی؟! شاید به این پست بک احتیاج داشته باشه خوب!


پس مقداری رو که میخوام از صفحه دوم به صفحه اول برگردونم داخل session بریزم.؟

شما سوالت عجیبه!
اول اینو بگو که اون مقادیری که در Textbox ها نوشته میشه رو چیکارش میکنی؟ یعنی اصلا چه استفاده ای از محتویات اون Textbox ها میکنی؟

elahe1364
شنبه 28 دی 1387, 22:40 عصر
ببینید فرض کنید توی صفحه دوم به جای دکمه یه grid view داریم که یه ستون select هم داره.
می خوام کاربر روی select هر رکوردی که زد مقدار فیلد Id اون رکورد توی text box مربوطه از صفحه اول قرار بگیره. این تقریبا یه حالت سرچ هست.
من این کد رو قبلا توی رویداد SelectedIndexChanged از grid view نوشتم ولی الان نمی دونم چی کار کنم.

Ahoora_Mazda
شنبه 28 دی 1387, 22:51 عصر
چه مشکلی؟! شاید به این پست بک احتیاج داشته باشه خوب!
اما ایشون میگن که به صفحه دیگری میخوان برن. پس باید زمانی به صفحه دیگر منتقل بشن که سابمیت فرم قبل موفق باشه. در این صورت redirect کردن درست هست.

mh19842008
یک شنبه 29 دی 1387, 10:23 صبح
اگه شما نیاز ندارید که مقادیر انتخابی رو در صفحه اولتون ببینید میتونید Id رکورد های انتخابی رو تو یه data table یا یک متغیر رشته ای که Id هارو با جداکننده جدا کرده قرار بدید ودر داخل یک session یا textbox بریزید وبه صفحه اول ارسال کنید آی دی ها رو split کنید و در مکان های مورد نظر قرار دهید و اگر باید هر بار داده ها دیده بشه میتونید از روش های پیشنهادی استفاده کنید

elahe1364
دوشنبه 30 دی 1387, 06:11 صبح
باید اطلاعات همون موقع دیده بشه.
اگه بخوام یه ستون اضافه توی گرید داشته باشم مثل select که با کلیک روی اون این اتفاق بیفته چی؟
آخه نمیشه توش کد جاوا نوشت خطا میده

mh19842008
دوشنبه 30 دی 1387, 08:48 صبح
شما میتونی Id رو تو رویداد select indexchanged گریدویو دریافت کنی و در یک data table قرار بدی و در بازگشت به صفحه اول هربار select کنی

milad_trip
دوشنبه 30 دی 1387, 09:25 صبح
دوست عزير راه ساده تر اينه كه تمام اطلاعاتت رو در يك صفحه قرار بدي

اگر صفحه شما postback بشه اطلاعاتت پاك ميشه مگر اينكه از انباره browser استفاده كني (البته در صورتي كه مقدار smartNavigation توي webconfig و يا ابتداي صفحت set كرده باشي)

راهي كه بدردت مي خوره اينه كه تمام اطلاعاتت در يك صفحه باشه و قسمت هاي مختلف رو توي جدول قرار بدي و بر حسب شرايط مختلف مقدار display واقع در style هر جدول رو set كني


<tr id="trConfirm" style="display: <%if(!IsConfirm){%>none<%}%>">
<td>
<table cellpadding="0" cellspacing="0" style="width: 100%">

مثلامتغير confirm در بالا يك متغير boolean است كه بسته به شرايط مقدارش تغيير مي كنه

اينطوره قسمتهاي مختلف هنوز توي صفحه وجود دارن ولي فقط نمايش داده نمي شن بعدا مي توني با يكي دوتا تابع جاوااسكريپت اين نمايش اين قسمت ها رو مديريت كني.
هم پروسس كمتري داري و هم حجم اطلاعات ردوبدل شده با سرور حداقل ميشه

محمدامین شریفی
دوشنبه 30 دی 1387, 13:04 عصر
ببینید فرض کنید توی صفحه دوم به جای دکمه یه grid view داریم که یه ستون select هم داره.
می خوام کاربر روی select هر رکوردی که زد مقدار فیلد Id اون رکورد توی text box مربوطه از صفحه اول قرار بگیره. این تقریبا یه حالت سرچ هست.
من این کد رو قبلا توی رویداد SelectedIndexChanged از grid view نوشتم ولی الان نمی دونم چی کار کنم.
خوب این کارها را انجام بده:
1)یک کنترل hyperlink بزار توی گردی ویو
2)آدرس url رو بزار همون صفحه ای که کاربر میخواد اطلاعات مرتبط رو ببینه
3)در صفحه ای دوم یک request بده و اون داه رو بخون
4)در صورت وجود داده را نمایش بده

مثال)
این آدرس از فرم اول فرستاده میشود:
http://barnamenevis.org/forum/showthread.php?t=143672
فرم دوم t را request میدهد.

---------------------------



اگر بیشتر از یک پارامتر میخواستی pass بدهی میتونی با & آنها را جدا کنی.ولی از لحاظ SEO اینکار پیشنهاد نمیشود و استفاده از session یا Cooky در حالت چند متغیری پیشنهاد میشود.




اگر درست متوجه شدم استاد m.hamidreza (http://barnamenevis.org/forum/member.php?u=35652) کمکت میکنند.

elahe1364
سه شنبه 01 بهمن 1387, 07:56 صبح
آقای شریفی انگار شما سوال اصلی رو نخوندید؟
مشکل یه چیز دیگه هست نه در روش انتقال اطلاعات

mh19842008
سه شنبه 01 بهمن 1387, 09:51 صبح
اطلاعات شما در هر بار برگشت به صفحه اول پاک میشه پس نهایتا شما باید اطلاعات رو در یک data source نگهداری کنی به علت وجود text box های زیادی که دارید

محمدامین شریفی
سه شنبه 01 بهمن 1387, 10:28 صبح
آقای شریفی انگار شما سوال اصلی رو نخوندید؟
مشکل یه چیز دیگه هست نه در روش انتقال اطلاعات
چرا اتفاقا تمام پست ها رو خوندم ولی سردر نیاوردم میخواهید چیکار کنید.
اینجا (http://www.barnamenevis.org/forum/showthread.php?t=143428) را ببینید امیدوارم کمکتون کنه.

elahe1364
سه شنبه 01 بهمن 1387, 17:52 عصر
ببخشید از اول توضیح ندادم فکر کردم اونجوری بهتر متوجه میشید.

ببینید توی صفحه اول چندین text box و combo هست که توش اطلاعات وارد میشه .یک text box دارم که قراره توش مثلا کد مشتری وارد بشه.جلوی این تکست یک دکمه جستجو گذاشتم که وقتی کاربر روش کلیک می کنه یه صفحه جدید باز میشه که توی یه گرید اطلاعات جدول مشتری رو نشون می ده. کاربر می تونه توی این صفحه جدید search کنه و مشتری مورد نظر را انتخاب کنه. وقتی که رکورد مورد نظر از گرید انتخاب شد باید این صفحه بسته بشه و مقدار کد مشتری توی تکست مربوطه صفحه قبل ریخته بشه.
حالا مشکل اینجاست که اگه کاربر توی بقیه تکست ها اطلاعات وارد کنه و بعد دکمه جستجو رو بزنه وقتی دوباره به این صفحه برگشت اطلاعات قبلی وارد شده پاک شده.

محمدامین شریفی
سه شنبه 01 بهمن 1387, 19:13 عصر
با اجازه استاد m.hamidreza (http://www.barnamenevis.org/forum/member.php?u=35652) و tarhebartar (http://www.barnamenevis.org/forum/member.php?u=56432) جان
پس دیدید که راهنماییی قبلی من هم بیراه نبود.


var id = prompt("لطفا شماره کنتور را وارد کنید :","")
addr = "../kontor.aspx?id=" + id;
open(addr,"null","titlebar=no,toolbar=no,location=no,status=no,menub ar=no,scrollbars=yes,resizable=no,width=780,height = 400");

اینجوری صفحه جستجو باز میشه.حالا کدی که قبلا گفتم رو تو این صفحه مینویسید.
دیگه نیازی به redirect هم نیست و به نفع مشتری هم هست چون زمان کمتری برای load شدن صفحه منتظر میشود،شما میتوانید از کنترل pop up ای جکس هم استفاده کنید.
درباره فیلتر کردن گرید ویو ، این هم تاپیکش (http://www.barnamenevis.org/forum/showthread.php?t=142559).
مشکل دیگه ای هم هست که با جستجو حل نمیشود بفرمایید.

پیروز باشید.

elahe1364
سه شنبه 01 بهمن 1387, 22:17 عصر
با عرض شرمندگی من دیگه روم نمیشه سوال بپرسم. ولی مشکل اصلی من حل نشده .نمی دونم من خیلی بد توضیح میدم؟
من تا مرحله باز کردن صفحه جدید هم پیش رفتم.فیلتر هم میتونم انجام بدم.
فرض کنید الان کاربر توی صفحه سرچ رکورد مورد نظر رو پیدا کرد و انتخابش کرد . الان باید صفحه search بسته بشه و همون صفحه قبلی نمایش داده بشه در حالیکه ID رکورد انتخاب شده توی صفحه سرچ هم، توی TextBox مربوطه از صفحه اصلی نمایش داده بشه.

محمدامین شریفی
چهارشنبه 02 بهمن 1387, 00:51 صبح
با عرض شرمندگی من دیگه روم نمیشه سوال بپرسم. ولی مشکل اصلی من حل نشده .نمی دونم من خیلی بد توضیح میدم؟
من تا مرحله باز کردن صفحه جدید هم پیش رفتم.فیلتر هم میتونم انجام بدم.
فرض کنید الان کاربر توی صفحه سرچ رکورد مورد نظر رو پیدا کرد و انتخابش کرد . الان باید صفحه search بسته بشه و همون صفحه قبلی نمایش داده بشه در حالیکه ID رکورد انتخاب شده توی صفحه سرچ هم، توی TextBox مربوطه از صفحه اصلی نمایش داده بشه.
با اجازه اساتید.
خواهش میکنم این فارم برای این هست که به این جور پرسش ها جواب داده بشه.
این کد فرم اول:


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script>
function openner()
{
open("Default2.aspx","null","titlebar=no,toolbar=no,location=no,status=no,menub ar=no,scrollbars=yes,resizable=no,width=780,height = 400");
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>

</div>
<input id="Button1" type="button" value="button" onclick="openner();" />
<input id="Text1" type="text" />
</form>

</body>
</html>


اینم کد فرم جستجو:


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script>
function setter(){
window.opener.document.getElementById("Text1").value = "hello";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="button" onclick="setter();" />
</div>
</form>
</body>
</html>



این مقوله ها را هم مطالعه کن:


httpcontext
application variable

اینم برای دسترسی به کنترل های asp.net با javascript:


alert( document.getElementById('<%= TextBox1.ClientID %>').value);




مشکل دیگه ای؟(البته من خودم دیگه کار دارم سروران جوابت رو میدند).

پیروز باشید.

elahe1364
پنج شنبه 03 بهمن 1387, 08:40 صبح
یه سوال دیگه؟
من چه جوری میتونم الان که تو صفحه سرچ هستم به یه تکست باکس توی صفحه قبلی دسترسی داشته باشم؟ با این کد که گفتید نتونستم کار کنم.
در ضمن من میخوام این کدهای جاوا رو توی صفحه ای که کدای C# رو مینویسم بنویسم.

محمدامین شریفی
پنج شنبه 03 بهمن 1387, 10:52 صبح
یه سوال دیگه؟
سعی کنید میشه.
اگر هم به جوابتون رسیدید دیگه ادامه ندهید.در ضمن هر تاپیک برای یک سوال است.لطفا ادامه ندهید.

من چه جوری میتونم الان که تو صفحه سرچ هستم به یه تکست باکس توی صفحه قبلی دسترسی داشته باشم؟مطمئن هستم درباره اون 2 تا کلید واژه ای که دادم، اصلا جستجو نکردی،اگه جستجو میکردی، میدیدی متدی به نام PreviousPage داریم.

با این کد که گفتید نتونستم کار کنم.
در ضمن من میخوام این کدهای جاوا رو توی صفحه ای که کدای C# رو مینویسم بنویسم.جالب هست هر مرحله که پیش میرید میگید با کد قبلی نمیشه ولی ادامه کار رو میپرسید!!:متفکر:.برای ادامه توصیه میکنم اول کتاب JS رو بخونید یا جستجو بفرمایید بعد پرسشتان را مطرح کنید.

elahe1364
پنج شنبه 03 بهمن 1387, 14:41 عصر
مرسی دوست عزیزم
ولی مطمئن باشید هیچ کدوم از کدای شما منو به جواب نرسونده
من مجبور شدم روش کارم رو عوض کنم برای همین مجبور شدم سوال جدید بپرسم.
شما می تونید دیگه جواب ندید.
از زحمتاتون هم ممنون

محمدامین شریفی
پنج شنبه 03 بهمن 1387, 17:06 عصر
مرسی دوست عزیزم
ولی مطمئن باشید هیچ کدوم از کدای شما منو به جواب نرسونده
من مجبور شدم روش کارم رو عوض کنم برای همین مجبور شدم سوال جدید بپرسم.
شما می تونید دیگه جواب ندید.
از زحمتاتون هم ممنون
الهه خانم! چرا به جواب نرستیدید؟
شما یکی از اشکالاتتون این هست که سوال را واضح مطرح نمیکنید،حالا از اون مرحله قبل چیا رو مشکل دارید؟ما هم اگه نمیخواستیم جواب ندیدم؛از همون اولش جواب نمیدادیم،مثلا اگر میگیم جستجو کنید بخاطر فقط خودتون هست.چون چگونه جستجو کردت خیلی مهم تر از جواب است.

پیوز باشید

محمدامین شریفی
جمعه 04 بهمن 1387, 15:08 عصر
یه سوال دیگه؟
من چه جوری میتونم الان که تو صفحه سرچ هستم به یه تکست باکس توی صفحه قبلی دسترسی داشته باشم؟ با این کد که گفتید نتونستم کار کنم.
در ضمن من میخوام این کدهای جاوا رو توی صفحه ای که کدای C# رو مینویسم بنویسم.


Page mypage = PreviousPage;
// mypage.FindControl("TextBox1").te
//this.Parent.FindControl("TextBox1").Site

string str = " window.opener.document.getElementById('TextBox1'). value='hello persia';";
Page.ClientScript.RegisterStartupScript(Page.GetTy pe(), "PersianMan", str, true);