PDA

View Full Version : ارتباط توابع در codebehind,markup



Leyla2011
دوشنبه 26 تیر 1391, 14:41 عصر
سلام
کسی میدونه چطور میشه مقدار برگشتی,از تابع تعریف شده در محیط codebehind رابه عنوان ورودی یه تابع در markup قرار داد میشه اصلا همچین کاری کرد

alonemm
دوشنبه 26 تیر 1391, 17:35 عصر
باسلام:

بله دوست گرامی ما میتونیم جواب یک متد رو از Code behind به عنوان پارامتر ورودی یک تابع در (JavaScript (markup در سمت کلاینت داشته باشیم.

در قالب یک پروژه صفحه aspx ما به شکل زیر میشه:


<%@ 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>Majid Maghsoudipour</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<script type="text/javascript">
function btnAccept_onclick() {
PageMethods.docall(onSuccess, onFailure);
}

function onSuccess(result) {
alert(result);
}


function onFailure(error) {
alert(error);
}
</script>
<input type="button" id="Button1" value="Accept" onclick="return btnAccept_onclick()" />
</div>
</form>
</body>
</html>



و در فایل cs:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Web.Script.Services;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

[ScriptMethod, WebMethod]
public static string docall()
{
return "Hello" + GetName();
}

protected static string GetName()
{
return "Majid";
}
}


از پروژه لذت ببرید با کلیک روی دکمه Accept متد docall از سرور فراخوانی میشود و جوابش به عنوان پارامتر به تابع جاوا اسکریپتی onSuccess به عنوان پارامتر ورودی با نام result وارد میشود که در انجا من اونو با تابع alert نمایش دادم شما میتونید عملیات موردنظرتون رو انجام بدید.

نکته:
1- دقت کنید که حتما متدها باید از نوع Static تعریف شده باشن.
2- برای دسترسی به متدهای Code behind باید خاصیت EnablePageMethods رو از شی ScriptManager برابر با True قرار بدید.


موفق باشید.

fakhravari
یک شنبه 05 شهریور 1391, 15:36 عصر
با سلام
<script type="text/javascript">
function btnAccept_onclick() {
PageMethods.t1(onSuccess, onFailure);
PageMethods.t2(onSuccess, onFailure);
PageMethods.t3(onSuccess, onFailure);
}

function onSuccess(result) {
alert(result);
}


function onFailure(error) {
alert(error);
}
</script>
من 3 تا تابع با اسم های t1 تا 3 دارم.
که به ترتیب اجرا میشن
[ScriptMethod, WebMethod]
public static string t1()
{
try
{
DataTable Dt = new DataTable();
Dt = Fakhravary.SQL.DAL.FillDataTable("SELECT *4 FROM B_Categories");
return "Salam Oki Shud. SELECT * FROM B_Categories";

}
catch
{
return "Salam Oki Nashud. SELECT * FROM B_Categories";
}
}

[ScriptMethod, WebMethod]
public static string t2()
{

try
{
DataTable Dt1 = new DataTable();
Dt1 = Fakhravary.SQL.DAL.FillDataTable("SELECT *4 FROM B_Topics");
return "Salam Oki Shud. SELECT * FROM B_Topics";
}
catch
{
return "Salam Oki Nashud. SELECT * FROM B_Categories";
}
}

[ScriptMethod, WebMethod]
public static string t3()
{
DataTable Dt2 = new DataTable();
Dt2 = Fakhravary.SQL.DAL.FillDataTable("SELECT * FROM B_Forums");
return "Salam Oki Shud. SELECT * FROM B_Forums";
}
خب مشکلی نیست تا اینجا.
الان من میخواهم تایع هام در یک تابع جمع شوند.
برای مثال
public static void Run()
{
تابع اول
برگشت خروجی



تابع دوم
برگشت خروجی



تابع سوم
برگشت خروجی

}

alonemm
یک شنبه 05 شهریور 1391, 15:41 عصر
باسلام:

چرا در 1 متد هر سه متد رو صدا نمیکنید؟

mpmsoft
یک شنبه 05 شهریور 1391, 21:25 عصر
روش ساده تر



<Html>
<Head>
</Head>
<Body>

<% if (varInCode == True)

Response.Write(MethodNameInCode());

%>

</Body>
</Html>

fakhravari
یک شنبه 05 شهریور 1391, 23:00 عصر
با سلام
اگر میشه کمی توضیح دهید من روش پست 3 تست کردم و جواب میده.
حالا میخواهم تابع را به شکل
public static void Run() {
تابع اول
برگشت خروجی



تابع دوم
برگشت خروجی



تابع سوم
برگشت خروجی

}

در بیارم.
ممنون میشم توضیحاتی بدین

mahmood_4246
یک شنبه 05 شهریور 1391, 23:09 عصر
دوستان برید سایت devzobe.ir یه کد توپپپپپ با jquery و Ajax گذاشته .. کلن از این راه حل بهتره .. چون از Script manager استفاده نمیکنه
این لینکش :
http://www.devzone.ir/post/1389/09/22/jQuery-PageMethod-Plugin.aspx

fakhravari
دوشنبه 06 شهریور 1391, 00:00 صبح
گنگه :اشتباه:
http://www.devzone.ir/post/1389/09/22/jQuery-PageMethod-Plugin.aspx
هدف من پست 6.