PDA

View Full Version : چک کردن اطلاعات یک فرم در فرم دیگر



gole_maryam
یک شنبه 03 مهر 1384, 10:13 صبح
سلام
من یک برنامه نوشته ام که می خواهم در یک صفحه اگر عبارت درون یک textbox برابر با عبارت خاصی بود در صفحه بعد همه button های گذاشته شده در صفحه نمایش داده شود و در غیر این صورت فقط برخی از انها در صفحه بعدی نمایش داده شود در واقع نمی دانم چگونه باید اطلاعات یک فرم را در فرم دیگری چک کنم از شما خواهش میکنم من را در حل مشکلم کمک کنید اگر ممکن هست کد این قسمت را به vb برای من ارسال کنید
با تشکر فراوان از همه شما دوستان عزیز

Behrouz_Rad
یک شنبه 03 مهر 1384, 13:16 عصر
قبلا مقاله ای در این باره ارائه داده بودم که به طرز مشکوکی حذف شده!
اصول کار:
ابتدا باید برای صفحه ای که قصد ارسال مقادیر از آن را دارید، یک نام کلاس دلخواه تعیین کنید.
اینکار با ذکر خاصیت ClassName و مقداردهی به آن در دایرکتیو Page انجام می پذیرد.
سپس، برای هر کدام از مقادیر که قصد ارسال آنها را دارید باید یک Property با دستیاب Get در صفحه مبدا ایجاد کنید.
مقدار برگشتی دستیاب Get، مقداری است که قصد پاس دادن آن را دارید همانند مقدار یک Text Box.
در نهایت، اطلاعات را با استفاده از متد Transfer شی Server به صفحه مقصد پاس می دهیم.
در صفحه ای که قصد بازیابی اطلاعات ارسال شده را دارید، باید یک مرجع به کلاسی که در صفحه مبدا نوشته شده با اضافه کردن دایرکتیو Reference و تنظیم خاصیت Page آن به نام صفحه مبدا، ایجاد کنید.
حال در صفحه مقصد با مساوی قرار دادن یک متغیر نمونه که از نوع کلاس صفحه مبدا ایجاد شده، درخواست HTTP را که شامل مقادیر ارسال شده است، از خاصیت Handler شی HttpContext دریافت می کنیم.
متغیر نمونه باید به نوع کلاس صفحه مبدا که اطلاعات را ارسال کرده تبدیل شود.
پس از تبدیل سازی می توان به مقادیر پاس داده شده از طریق خواص شی تبدیل شده، دسترسی پیدا کرد.

ایجاد صفحه ای که قصد ارسال مقادیر آن را داریم:
1) ایجاد یک نام کلاس برای صفحه مبدا با اضافه کردن خاصیت ClassName به دایرکتیو Page و دادن یک مقدار (نام کلاس) دلخواه به آن.


<%@ Page Language="VB" ClassName="MyClassName" %>

2) ایجاد یک خاصیت با دستیاب Get برای هر کدام از مقادیری که قصد ارسال آن را به صفحه دیگر داریم.
دستیاب Get، تنها باید مقداری را که قصد ارسال آن را داریم برگرداند همانند مقدار یک Text Box.


<script runat="server">
Public ReadOnly Property FirstName() As String
Get
Return TextBox1.Text
End Get
End Property
</script>

3) ارسال مقادیر به صفحه مقصد با استفاده از متد Transfer شی Server.


Sub SubmitButtonClick(sender As Object, e As EventArgs)
Server.Transfer("secondpage.aspx")
End Sub


مثال زیر، یک مثال کامل از چگونگی نحوه ارسال مقادیر دو Text Box به صفحه ای دیگر، در صفحه مبدا است.


<%@ Page Language="VB" ClassName="FirstPageClass" %>

<html>
<head>

<script runat="server">
Public ReadOnly Property FirstName() As String
Get
Return firstTextBox.Text
End Get
End Property

Public ReadOnly Property LastName() As String
Get
Return secondTextBox.Text
End Get
End Property

Sub ButtonClicked(sender As Object, e As EventArgs)
Server.Transfer("secondpage.aspx")
End Sub

</script>

</head>

<body>

<form runat="server">
First Name:
<asp:TextBox id="firstTextBox"
runat="server"/>
<br>
Last Name:
<asp:TextBox id="secondTextBox"
runat="server"/>
<br>
<asp:Button
OnClick="ButtonClicked"
Text="Go to second page"
runat=server />
</form>

</body>

</html>

ایجاد صفحه ای که قصد دریافت مقادیر ارسال شده در آن را داریم:
1) در وب فرمی که قصد دریافت مقادیر ارسال شده را دارید، یک دایرکیتو Reference ایجاد کنید و خاصیت Page آن را برابر با نام وب فرمی که قصد دریافت اطلاعات از آن را دارید، قرار دهید.


<%@ Reference Page="firstpage.aspx" %>

2) یک متغیر از نوع وب فرمی که قصد ارسال اطلاعات از آن را دارید، تعریف کنید.


<script runat="server">
Dim fp As FirstPageClass
</script>

3) شی IHttpHandler، شامل یک نمونه از تابع کنترل کننده ای است که درخواست های Http را جهت پردازش دریافت می کند.
از آنجا که نوع شی IHttpHandler همانند نوع متغیر تعریف شده در مرحله قبل نیست، باید قبل از عمل انتساب به متغیر، به نوع کلاس وب فرمی که اطلاعات از آن ارسال شده تبدیل شود.
شی کنترل کننده ی تقاضاها، با استفاده از خاصیت Handler شی HttpContext قابل دستیابی است.


<script runat="server">
Sub Page_Load()
If Not IsPostBack Then
fp = CType(Context.Handler, FirstPageClass)
End If
End Sub
</script>

4) حال، متغیر تعریف شده در مرحله 2، شامل یک نمونه از کلاس وب فرمی است که اطلاعات را ارسال کرده.
به راحتی می توان به مقادیر وب فرم مبدا دسترسی پیدا کرد.
در ساده ترین حالت با استفاده از سینکس زیر، دستیابی به مقادیر وب فرم مبدا امکان پذیر است:


<%=fp.FirstName%>


مثال زیر، یک مثال کامل از چگونگی نحوه دریافت مقادیر دو Text Box از صفحه ای دیگر است.


<%@ Page Language="VB" %>
<%@ Reference Page="firstpage.aspx" %>

<html>

<head>

<script runat="server">

Dim fp As FirstPageClass

Sub Page_Load()
If Not IsPostBack Then
fp = CType(Context.Handler, FirstPageClass)
End If
End Sub

</script>

</head>

<body>

<form runat="server">

Hello <%=fp.FirstName%> <%=fp.LastName%>

</form>

</body>

</html>


موفق باشید.

javad3151
دوشنبه 04 مهر 1384, 09:49 صبح
یه راه ساده اینکه که از session ها استفاده کنید
موقعی که در فرم 1 هستید اطلاعات رو در یک session ذخیره کنید :
session("test1") = texbox1.text
و موقعی که فرم 2 در حال بارگزاری (page load) است اطلاعات session را چک کنید :
if session("test1") = "admin" then ....

wishmaster48
دوشنبه 14 تیر 1389, 21:38 عصر
یه راه ساده اینکه که از session ها استفاده کنید
موقعی که در فرم 1 هستید اطلاعات رو در یک session ذخیره کنید :
session("test1") = texbox1.text
و موقعی که فرم 2 در حال بارگزاری (page load) است اطلاعات session را چک کنید :
if session("test1") = "admin" then ....

خوب اگر بخواهیم به مقادیر همه کنترلها در فرم دیگر دسترسی داشته باشیم چکار کنیم؟
مثلا من می خوام که مقادیر تمامی textbox های فرم اول در یکسری labelها روی فرم دوم نمایش داده شوند.
ممنون میشم اگه جواب بدین

omidrayaneh.68
سه شنبه 15 آذر 1390, 20:09 عصر
خوب اگر بخواهیم به مقادیر همه کنترلها در فرم دیگر دسترسی داشته باشیم چکار کنیم؟
مثلا من می خوام که مقادیر تمامی textbox های فرم اول در یکسری labelها روی فرم دوم نمایش داده شوند.
ممنون میشم اگه جواب بدین

سلام منم تو این قسمت موندم کسی میتونه با session یه مثال بزنه یه label را مساوی بده با یک label دیگه در یه صفحه دیگه