PDA

View Full Version : سوال: تبادل داده ها بين دو صفحه مرورگر بدون رفرش



behesht.royaha
سه شنبه 26 بهمن 1389, 21:57 عصر
با سلام و خسته نباشيد خدمت اساتيد بر جسته

سايت رو گشتم مطالب زياد و خوبي براي انتقال اطلاعات بين دو صفحه مرورگر بود ولي چيزي كه من ميخوام اينه كه :

صفحه اول سايت من باز page1 و داخل يك textbox دارم به نام textbox1 و يك button
حالا بر روي button كليك ميكنم تا صفحه page2 به صورت جدا باز شه (يعني صفحه اول هنوز بازه بسته نشده)
حالا در صفحه دوم بازم يك textbox دارم به نام textbox1 و يك button
ميخوام در button صفحه دوم كدي بنويسم كه مقادير داخل textbox رو بريزه داخل textbox صفحه اول و خودش بسته شه(صفحه دوم) و صفحه اول بدون رفرش يا كليك و يا زدن button خاصي اطلاعات رو داخل textbox بياره.

يعني به محض كليك روي button صفحه دوم مقادير داخل textbox صفحه اول بياد بدون رفرش صفحه.

با زيان C# كار ميكنم.

با تشكر از شما.

Javad_Darvish_Amiry
چهارشنبه 27 بهمن 1389, 00:05 صبح
سلام خسته نباشید. کافیه توی صفحه اول جاوااسکریپت زیر رو قرار بدید: (صفحات فرضی هستند. خودتون بسته به نیازتون تو برنامه دیگه درستش کنید:)


<html>
<head>
<script type="text/javascript">
function openWindow(){
winref = window.open("page2.html", "_blank", "height=500,width=400");
if(!winref.opener){ winref.opener = this.window; }
}
function getValue(val){
document.getElementById("result").innerHTML = val;
}
var globalGetValue = this.getValue;
</script>
</head>
<body>
<div id="result"></div>
<input type="button" value="open another window" onclick="javascript:openWindow()" />
</body>
</html>

و توی صفحه دوم هم از جاوااسکریپت زیر استفاده کنید:


<html>
<head>
<script type="text/javascript">
function closeWindow(){
window.opener.globalGetValue(document.getElementBy Id("mytext").value);
window.close();
}
</script>
</head>
<body>
<input type="text" id="mytext" />
<input type="button" value="open another window" onclick="javascript:closeWindow()" />
</body>
</html>

به راحتی از صفحه دوم میتونید هر متودی رو توی صفحه اول صدا بزنید و هر آرگومانی خواستید بهش پاس بدید. دیگه این که با کنترل های ASP.NET کار کنید یا تگ های HTML و مستقیم جاوا اسریپت بنویسید یا مثلا از جی کوئری استفاده کنید، دست خودتونه. اصول همینی هست که نوشتم و خیلی راحته. فقط یه مشکلی هست یادتون باشه: موقع تست روی لوکال بعضی مرورگر ها اجازه اجرای کد رو نمیدن که رو نت درست میشه. فایرفاکس و اپرا موردی ندارن. گوگل کروم به هیچ وجه رو لوکال اجازه نمیده. اینترنت اکسپلورر هم باید Allow Blocked Contentش رو بزنید تا اجازه بده. موفق باشید.

behesht.royaha
چهارشنبه 27 بهمن 1389, 17:34 عصر
با تشكر از شما دوست عزيز .

ميشه كاري كرد كه مقادير دريافتي داخل textbox هاي asp.net قرار بگيره و داخل div نره . مثلا داخل

<asp:TextBox ID="TextBox1" runat="server" Style="z-index: 101; left: 497px; position: absolute;
top: 78px" Width="233px" ></asp:TextBox>

بيوفته.

ممنون از راهنماييتون.

Javad_Darvish_Amiry
چهارشنبه 27 بهمن 1389, 19:14 عصر
سلام. خواهش میکنم. بله. کافیه این خط رو در کد جاوا اسکریپت صفحه اول:

document.getElementById("result").innerHTML = val;
به این خط تغییر بدید:

document.getElementById('<%= TextBox1.ClientID %>').innerHTML = val;
قبلا در این مورد زیاد بحث شده و مطالب مفید و مفصلی میتونید تو سایت پیدا کنید. موفق باشید.

behesht.royaha
چهارشنبه 27 بهمن 1389, 22:17 عصر
سلام. خواهش میکنم. بله. کافیه این خط رو در کد جاوا اسکریپت صفحه اول:

document.getElementById("result").innerHTML = val;
به این خط تغییر بدید:

document.getElementById('<%= TextBox1.ClientID %>').innerHTML = val;
قبلا در این مورد زیاد بحث شده و مطالب مفید و مفصلی میتونید تو سایت پیدا کنید. موفق باشید.


با سلام و تشكر از شما دوست عزيز . كد زير رو جايگزين كردم ولي مقادير رو نمياره ؟ ميتونيد راهنماييم كنيد مشكل از كجاست ؟؟
خيلي مهمه

Javad_Darvish_Amiry
پنج شنبه 28 بهمن 1389, 10:51 صبح
سلام. عذرخواهی میکنم. تکست باکس، سمت کلاینت به تگ input رندر میشه و این تگ خاصیت innerHTML نداره و باید با value کار کرد. شرمنده حواسم نبود :خجالت:. کد گفته شده در پست قبلی رو با کد زیر جایگزین کنید. موفق باشید.

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

behesht.royaha
جمعه 29 بهمن 1389, 09:57 صبح
ممنون دوست عزيزي بسيار عالي بود.

فقط يك سوال ميمونه اينه كه اگه بخوام داخل صفحه دو يا سه بار استفاده كنم به صورت مجزا اون چطور ميشه ؟

ميشهخ لطف كنيد كمي توضيح بديد