PDA

View Full Version : فراخوانی فایل جاوا در content pages



rezaei manesh
پنج شنبه 23 آذر 1385, 10:52 صبح
سلام
من کد های جاوا اسکریپت رو در یک فایل قرار دادم و اون و به پروژه اضافه کردم اما نمی دونم چه طوری اونو تو یه content pages صدا بزنم یه اگه می شه کمک کنید

rezaei manesh
شنبه 25 آذر 1385, 15:14 عصر
کمک کنید لطفا

hamed_bostan
شنبه 23 دی 1385, 13:49 عصر
منهم این مشکل رو دارم . ممنون می شم کمک کنید

Behrooz_CS
شنبه 23 دی 1385, 16:13 عصر
توی Header HTML اینو باید بنویسی


<head runat="server">
<title>Untitled Page</title>
<script src="YourJavaScript.js" language="javascript" type="text/javascript" ></script>
</head>

rezaei manesh
شنبه 23 دی 1385, 16:39 عصر
آقا این کد رو کجا باید بزاریم ؟
در مستر که می زاریم عمل نمی کنه
در دی تل هم که head رو نمی شناسه؟!
من این کد ها رو قبلا تست کرده بودم اما مشکل این head هستش؟!!!!!!!!
شما مطمئن هستید که اینو در مستر دیتل استفاده کردی نه یه فرم معمولی؟!

Behrooz_CS
شنبه 23 دی 1385, 16:53 عصر
من یه نمونه توی MasterPage ساختم و JS را توی Header MaserPage با کد بالا اضافه کردم کاملاً کار می کنه و هیچ مشکلی نداره.

rezaei manesh
شنبه 23 دی 1385, 17:01 عصر
ما می خوام ازکد های در دی تل استفاده کنیم
فرض کن مثلا یک گرید در یکی از فرمهایی دارم که به مستر پیج اضافه می شه (کانتنت ها) اونجا می خوایم فایل جاوا رو فراخوانی کنیم.

Behrooz_CS
شنبه 23 دی 1385, 17:12 عصر
خوب فقط کافیه توابع موجود توی JS را در ContentPage صدا بزنی
مثلاً می تونی توی خصوصیت OnClientClick یک دکمه ASP.NET نام تابع JS را که می خواهی صدا بزنی را وارد کنی ، این طوری و قتی روش کلیک کردی تابع JS صدا زده می شه.

rezaei manesh
یک شنبه 24 دی 1385, 18:27 عصر
اقا من کد فراخوانی فایل رو در هدر مستر نوشتم و به قول شما نام یک تابع رو هم در خصوصیت OnClientClick کانتنت نوشتم اما باز هم فرقی نکرد؟
اگه می شه یه مثال کوچولو برامون بذارید
با تشکر از توجه شما

Behrooz_CS
یک شنبه 24 دی 1385, 18:43 عصر
اگر تابع شما FN() باشه باید نام تابع را در Property مربوطه اینجوری بنویسی :
FN()

rezaei manesh
دوشنبه 25 دی 1385, 08:27 صبح
سلام آقا من این پرانتز ها یادم رفته بود
حالا یک واکنشی رو از فایل جاوا دارم اما هنون نمی تونم از اون توابع جواب رو بگیرم برای مثال من یک تابع دارم که تایید حذف رو نشون می ده اما با اون که من در موقع انصراف مقدار false رو بر می گردونم اما باز هم صفحه پست بک می شه یهنی د رهمه احمال صفحه پست بک می شه و بهتر بگم نتایج توابع من برای فرم جاریم اعمال نمی شه!
این هم تابع لازم به توضیح هست که پیغام ها درست نمایش داده می شند اما جوابهای نه؟!


function confirmDelete()
{
var xCounter = 0;
if (chk_Array_IDs != null)
{
for (i=0;i<chk_Array_IDs.length;i++)
{
var ref_chk = document.getElementById(chk_Array_IDs[i]);
if (ref_chk != null)
if (ref_chk.checked == true)
++xCounter;
}
if (xCounter == 0)
{
alert("!هیچ رکوردی انتخاب نشده است");
return false;
}
else
{
var ret_confirm = confirm("آیا مطمئن به حذف " +xCounter+ " رکورد انتخابی هستید؟");
if (ret_confirm == true)
{
checkclick = "true";
return true;
}
else
return false;
}
}
}

با تشکر از توجه شما جناب راد

sarasara
سه شنبه 26 دی 1385, 15:15 عصر
باید تابع جاوااسکریپتت رو بنویسی (مثلا تابعی با نام yourFunc) این تابع را در قسما <head> برنامه ات و در بین تگهای <script> .... </script> بنویس و بعد در PageLoad برنامه ات از دستور زیر استفاده کنی:

submitButton.Attributes.Add("onclick", "return yourFunc();");
البته این واسه C# هست اما فکر می کنم برای Vb هم فرقی نکنه!
موفق باشی.

rezaei manesh
چهارشنبه 27 دی 1385, 09:13 صبح
با قرار داده return مشکل من تا حد زیادی حل شد اما هنوز برای بعضی توابع هم مشکل دارم
برای توابعی که از دستور زیر استفاده شده (به علت این که همیشه مقدار null رو داره)
document.getElementById(rowID)
اینم تابع


function rowAppearanceOnDeleteMode(rowID)
{
var color = document.getElementById(rowID).style.backgroundCol or;
var ref_check = document.getElementById(rowID).getElementsByTagNam e("input").item(1);
if (ref_check.checked)
{
document.getElementById(rowID).style.backgroundCol or = '#FFEEC2';
document.getElementById(rowID).style.fontStyle = 'italic';
}
else
{
document.getElementById(rowID).style.backgroundCol or = '#DEDFDE';
document.getElementById(rowID).style.fontStyle = 'normal';
}
}

این getElementById خالی هست rowid هم ایندکس رکورد های دیتاگراید ویو توی یکی از کتنت پیج هام هست
کلا روش کار رو سعی کردم از همون برنامه آقای راد که برای گراید ویو گذاشتن قرار بدم ؟!
مشکل کار کجاست؟!

sarasara
چهارشنبه 27 دی 1385, 13:56 عصر
تابع تو الان هیچ returnِی نداره باید return false رو هم بهش اضافه کنی ، من یه تیکه کد نوشتم شاید به دردت بخوره:


<script language="javascript">
function rowAppearanceOnDeleteMode(rowID)
{
var color = document.getElementById(rowID).style.backgroundCol or;
document.getElementById(rowID).style.backgroundCol or = '#FFEEC2';
document.getElementById(rowID).style.fontStyle = 'italic';
return false;
}
</script>
<form id="form1" runat="server">
<div>
<table ID="Table1" runat="server" width="100%">
<tr Id="Row1"><td>Salam</td></tr>
<tr Id="Row2"><td>Hello</td></tr>
</table>
<asp:Button ID="Button1" Text="submit" runat="server" />
</div>
</form>و در نهایت:

protected void Page_Load(object sender, EventArgs e)
{
Button1.Attributes.Add("onClick","return rowAppearanceOnDeleteMode('Row1')");

}
protected void Button1_Click(object sender, EventArgs e)
{
// here your code
}

در اینجا با submit شدن فرم رنگ سطر مورد نظر بدون Submit شدن و Refresh شدن صفحه عوض می شه.
امیدوارم مشکلت حل بشه!

rezaei manesh
چهارشنبه 27 دی 1385, 16:09 عصر
سلام
یک گام به کمک شما رفتم جلوتر الان این null هست


document.getElementById(rowID).getElementsByTagNam e("input").item(1);


وقتی میرم روی رکورد ها رنگشون عوض می شه اما وقتی از اون رد می شم به حالت قبل بر نمی گرده ؟!

rezaei manesh
پنج شنبه 28 دی 1385, 08:11 صبح
یک گام دیگه هم رفتم الان همه مشکل حل شده با قرار دادن 0 بجای یک در کد بالا
اما گراید من یک خط درمیان رنگ رکورد ها با هم فرق می کنه اما با این روش همه یکی می شه حالا من می خوام یک متغییر تعریف کنم و وقتی می رم رو رکوردی رنگ اونو توش قرار بدم و وقتی می خوام برم رنگ قبلی رو از این متغیر بخونم و اونو بزارم جای قبلی
اما نمی تونم یک متغیر در کد جاوا تعریف کنم رنگ رو در خودش نگه داره
چه طوری باید این کارو بکنم و اینکه اصلا این کار درسته؟

سید مسعود موحد
شنبه 30 دی 1385, 13:52 عصر
دوستان عزیز
من یکم گیج شدم من الان یک صفحه مانند زیر دارم

<%@ Page Language="VB" MasterPageFile="~/Master.master" AutoEventWireup="false" CodeFile="Default3.aspx.vb" Inherits="Default3" title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:Button ID="Button1" runat="server" onmousedown="DeleteBox(this)" Text="Button" /><br />
<input id="Button2" onclick="showmessage()" type="button" value="button" /><asp:HiddenField
ID="HF1" runat="server" Value='"masoud"' />
</asp:Content>

حالا یکی از دوستان بگن که من این کدهای اسکریپ زیر را باید کجا بزارم تا دستور

document.getElementById("Label1").innerText = ""

کار کند من خودم به صورت زیر گذاشتم ولی پیغام زیر را می دهد


<%@ Page Language="VB" MasterPageFile="~/Master.master" AutoEventWireup="false" CodeFile="Default3.aspx.vb" Inherits="Default3" title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
<script language =javascript >
function showmessage()
{
document.getElementById("Label1").innerText = ""
}
</script>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:Button ID="Button1" runat="server" onmousedown="DeleteBox(this)" Text="Button" /><br />
<input id="Button2" onclick="showmessage()" type="button" value="button" /><asp:HiddenField
ID="HF1" runat="server" Value='"masoud"' />
</asp:Content>



erro: 'document.getElementById("...")' is null or nut an object
البته شایان ذکر است که من در این صفحه خالی که در اوی پستم آورده ام تگهای html , head هم قرار داده ام ولی خطا میدهد که منطقی هم باید باشد چون صفحه من داخل یک مستر پیج است لطفا اگر میشود تکهای صفحه من را هم بگین چی باید باشد
با تشکر از دوستان عزیز

Behrooz_CS
سه شنبه 03 بهمن 1385, 16:31 عصر
پیشنهاد :

شما می توانید با استفاده از Page.ClientScript فایل JS خود را در رویداد Load صفحه خود رجیستر کنید و از آن استفاده کنید.