PDA

View Full Version : من یه sample ساده برای text change می خوام



marmar
یک شنبه 16 مرداد 1384, 13:31 عصر
سلام

یه sample ساده برای text change می خوام که با وارد کردن یک حرف و بدون زدن enter یا هر دکمه دیگری یا اینکه بدون اینکه صفحه دوباره loadشود عملیاتی که خواسته شده انجام دهد مثلا response.write البته در web aplication
ممنون :)

Mahdavi
یک شنبه 16 مرداد 1384, 14:47 عصر
برای اینکه صفحه reload نشه شما باید از کدهای java سمت کلاینت استفاده کنی که خیلی از قابلیتها رو از شما میگیره

EhsanKhafan
دوشنبه 17 مرداد 1384, 06:38 صبح
این کار همان جادوی Ajax است.من که باهاش کلی حال کردم.توصیه میکنم راجع بهش مطالعه کنید

marmar
دوشنبه 17 مرداد 1384, 07:40 صبح
یعنی شمامی گید که من با این ajax اگه کار کنم بدون اینکه بعضی از قابلیت ها از من گرفته بشه می تونم به خواسته ی خودم برسم؟

marmar
دوشنبه 17 مرداد 1384, 09:28 صبح
سلام
آقای خفن میشه یکم راهنماییم کنید فعلا بتونم با یک textbox ترتیب ویرایش داخل datagrid رو عوض کنم تا بعدا در اسرع وقت مفصل در رابطه با ajax مطالعه کنم
:tanx:

SoheilKH
دوشنبه 17 مرداد 1384, 21:40 عصر
سلام
در مورد عوض کردن ترتیب ویرایش در داخل دیتاگرید بیشتر توضیح بده.
با Ajax شما می تونی بدون Submit کردن فرم اطلاعات را از روی سرور بگیری و بفرستی .که تاثیر زیادی روی سرعت و کاهش Bandwith سرور داره .
حالا این که کی باید این کار را بکنی و که نباید به پروژه ات بر می گرده . و تحلیل خودت از پروژه ات

این هم یک سایت خوب در مورد Ajax :
http://ajaxpatterns.org/

EhsanKhafan
سه شنبه 18 مرداد 1384, 06:52 صبح
راجع به Ajax:
http://www.barnamenevis.org/forum/showthread.php?p=135375#post135375

در مورد textBox ات ... مراحل زیر را در پروژه Web Application ات دنبال کن(عین مراحلی است که در داکیومنت Ajax.dll اومده)
1.ابتدا Ajax.dll رو دانلود کن.
2. بعد اونو تو reference های پروژت Add کن
3. به فایل web.config ای قسمت رو اضافه کن :
(جای < ,> از - استفاده کردم تا اینجا درست بیاد)


-configuration-
-system.web-
-httpHandlers-
-add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" /-
-/httpHandlers-
...
-system.web-
-/configuration-

4.در رخداد Page_Load صفحه ی textBox ات این خط رو اضافه کن:


public class Index : System.Web.UI.Page{
private void Page_Load(object sender, EventArgs e){
Ajax.Utility.RegisterTypeForAjax(typeof(Index));
//...
}
//...
}

5.در فایل کدت متدی که میخواهی آجاکس وار صدا بشه را اینجوری تعریف کن :


[Ajax.AjaxMethod()]
public string ServerSideStringManipulate(string input)
{
return "Dude :" + input;
}

مهم [Ajax.AjaxMethod()] است که باید قبل از متدت بنویسی.

6.دو خط زیر رو به تگ HEAD صفحت اضافه کن(Namespace و Pageclass رو باید برابر فضای نام و کلاس صفحه ی خودت بکنی ) :
(جای < ,> از - استفاده کردم تا اینجا درست بیاد)


-script language="javascript" src="ajax/common.ashx"--/script-
-script language="javascript"
src="ajax/NAMESPACE.PAGECLASS,ASSEMBLYNAME.ashx"--/script-


7.حالا میتونی متدت رو از سمت کلاینت صدا کنی(مثلا با جاوا اسکریپت).مثلا (اگه کلاس صفحه Index باشه):


alert(Index.ServerSideStringManipulate(textboxstri ng));

OR

Index.ServerSideStringManipulate(textboxstring, ServerSideManip_CallBack);

function ServerSideManip_CallBack(response){
alert(response.value);
}

EhsanKhafan
سه شنبه 18 مرداد 1384, 07:01 صبح
و در مورد سوال خاص شما میتوانید با AJAX،یک DataSet یا بقیه کامپوننت های ADO.NET را نیز با سرور تبادل کنید.خوب وقتی textbox ات تغییر کرد با جاوا اسکریپت متدی از سرور رو صدا کن تا یک dataset جدید برای datagrid ات برگردونه.بعد با جاوا اسکریپت داده ها رو بروز کن.

marmar
سه شنبه 18 مرداد 1384, 14:05 عصر
سلام

خیلی خیلی خیلی مرسی از جواب دقیقی که دادید

اما چند سوال آقای خفن

1.فایل ajax .dllرو چجوری تو refrenceهای پروژم addکنم؟
2.بعد از این کد
[Ajax.AjaxMethod()]
متدی که باید ajax وار صدا بشه مثلا text changeمیباشد؟

3.کجا باید متدم رو از سمت کلاینت با این کد صدا کنم؟
alert(Index.ServerSideStringManipulate(textboxstri ng));

4.و در آخر یکم در مورد این خطی که در بالا نوشتید منظوطم اینه
alert(Index.ServerSideStringManipulate(textboxstri ng));

یکم بیشتر بگید مثلا کجا باید نوشته بشه یا بعد از این چی باید نوشته بشه
ممنون

marmar
سه شنبه 18 مرداد 1384, 15:11 عصر
ajax رو از کجا دانلود کنم؟

EhsanKhafan
چهارشنبه 19 مرداد 1384, 06:13 صبح
یه ناپیک ساختی به نام جادوی AJAX اون چی شد؟کلی لینک توپ برات گذاشتم اونجا.از اینجا این Dll رو بگیر:
1.http://ajax.schwarz-interactive.de/csharpsample/default.aspx

2.برای Add کردن در solution explorer روی refrences کلیک راست کن و از منوی امده Add Reference را انتخاب کن.در پنجره باز شده browse را انتخاب کن سپس فایل ajax.dll را پیدا کن و ok کن

3.ببین بعد از [Ajax.AjaxMethod()] هر متدی بیاد ajax engine یک proxy توی کلاینت ازش میسازه تا بتونی صداش کنی.بزار فعلا راحت تر بگم اگه [Ajax.AjaxMethod()]
قبل از یک متدی باشه میتونی با جاوا اسکریپت صداش کنی و مقدار بازگشتیشو توی صفحه بدون رفرش کردن نمایش بدی

4.alert(Index.ServerSideStringManipulate(textboxst ri ng)); فقط یک مثال از استفادهی مقدار بازگشتی از سرور بود.میتونی یک تابع جاوا اسکریپت بنویسی که وقتب textbox ات تغییر کرد صدا بشه بعد توی اون تابع متد سرورت رو به همین شکل تغییر بدی.
برای استفاده دقیق و راحت از AJAX باید یک اسکریپت کلاینت(مثل جاوا اسکریپت یا ویبی اسکریپت )رو خوب یاد بگیری در ضمن HTML هم که ضروریه.فکر نمیکنم HTML مشکلی داشته باشید ولی به هر حال راجع به این موضوع کتاب زیاده.

EhsanKhafan
چهارشنبه 19 مرداد 1384, 06:14 صبح
در HTML فایل aspx ات این باشه:
(جای > و< علامت - گذاشتم تا اینجا درست نشون بده)


-%@ Page language="c#" Codebehind="Index.aspx.cs" AutoEventWireup="false" Inherits="AjaxMethod.Index" %-
-!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" -
-HTML-
-HEAD-
-title-WebForm1-/title-
-script language="javascript" src="ajax/common.ashx"--/script-
-script language="javascript" src="ajax/AjaxMethod.Index,AjaxMethod.ashx"--/script-
-meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"-
-meta name="CODE_LANGUAGE" Content="C#"-
-meta name="vs_defaultClientScript" content="JavaScript"-
-meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"-
-script language=javascript-
-!--
function TextChanged()
{
var t=document.getElementById("Text1").value;

document.getElementById("Text2").value=Index.DoubleString(t).value;
}
//---
-/script-
-/HEAD-
-body MS_POSITIONING="GridLayout"-
-form id="Form1" method="post" runat="server"-
-INPUT id=Text1 onkeyup="TextChanged()" style="Z-INDEX: 101; LEFT: 360px; POSITION: absolute; TOP: 168px"
type="text" name=Text1-
-INPUT id="Text2" style="Z-INDEX: 102; LEFT: 360px; POSITION: absolute; TOP: 208px" type="text"-
-/form-

-/body-
-/HTML-



و متد AJAX زیر را هم در فایل .cs صفحت(فایل کد بیهایند) اضافه کن:


[Ajax.AjaxMethod()]
public string DoubleString(string input)
{
return input+ input;
}



دقت کن که namespace من در بالا AjaxMethod بوده و نام کلاس صفحه ی وبم Index

roya2002_80
یک شنبه 23 مرداد 1384, 06:45 صبح
با سلام
من یک datagrid در صفحه دارم که اطلاعاتی که کاربر در textBox بالایی وارد می کند وارد این datagrid می شود .من نمی دانم این کد را با ajax چه گونه بنویسم. لطفا مرا راهنمایی کنید برای من خیلی مهم است.

reza_reza_shirazi
سه شنبه 01 آذر 1384, 14:49 عصر
1- چطوری میشه یک دیتاست توسط ajax برگرداند و از آن در سمت کلاینت استفاده نمود؟

2- چطوری میشه که در یک تابع سمت سرور که با متد ajax نوشته شده است از کنترا های سمت کلاینت استفاده نمود ( مثلا برای ثبت اطلاعات در دیتابیس) ؟

EhsanKhafan
دوشنبه 17 بهمن 1384, 11:32 صبح
aval as hame ,bebakhshid pinglish minevisam!!windowse inja farsi nist:(

agha reza javabetun:
1.bale mishe ,anvaee type haye integers, strings, double, booleans, DateTime, DataSets and DataTables dar noskhe feli poshtibani mishe.baraye etelaate daghightaro bishtar document zir bakhsh complex data type ro motalee konid :

http://ajax.schwarz-interactive.de/download/AjaxGuide.doc

2.bale mishe control kard,faghat bayad event haye control haye javascript ro bedunid va bemoghe seda konid

dar zemn yek selsele mabahes rajebe AJAX tu weblogam shuru kardam,hozure shoma mojebe delgarmi man baraye edamash mishe:
http://notvoid.persianblog.com

ya ali

smnb36302
چهارشنبه 20 خرداد 1388, 02:41 صبح
سلام

یه sample ساده برای text change می خوام که با وارد کردن یک حرف و بدون زدن enter یا هر دکمه دیگری یا اینکه بدون اینکه صفحه دوباره loadشود عملیاتی که خواسته شده انجام دهد مثلا response.write البته در web aplication
ممنون :)

اگر من بخوام همین کار رو در win app انجام بدم چجوریه؟