PDA

View Full Version : انتقال داده



fatemeh rahimi
دوشنبه 08 بهمن 1386, 13:05 عصر
سلام.
من یه تابع با جاوا اسکریپت نوشتم(در کلاینت)،می خوام مقدار بازگشتی این تابع رو به محیط #C ام ،انتقال بدم.برای این کار چیکار باید بکنم؟

از Hidden استفاده کردم و مقدار تابع رو در Hidden.value ریختم،ولی در محیط #C در هنگام اجرا Hidden.value تهی هست! (Hidden رو Run as server هم کردم!)

raravaice
دوشنبه 08 بهمن 1386, 13:07 عصر
سلام

غیر ممکنه عمل نکنه.

کد جاوا اسکریپت و #C مربوط به این کار رو بزارین

fatemeh rahimi
دوشنبه 08 بهمن 1386, 13:21 عصر
کد جاوا :


function Select1()
{
Hidden1.value+=MHG_ClientGrid1_RowSel.cells[0].innerText;


}


کد #C :


protectedvoid Button4_Click1(object sender, EventArgs e)
{
barresi.GetInfo(Hidden1.value);
}

barresi ، یه obj از لایه BLL ام هست و getinfo هم اسم متدم که hidden به عنوان آرگومان بهش ارسال میشه.
ولی بعد از اجرا Hidden.value تهی هست!

raravaice
دوشنبه 08 بهمن 1386, 14:00 عصر
سلام

1.شما دستور جاوا رو به این شکل عوض کن :



function Select1()
{
Hidden1.value+=MHG_ClientGrid1_RowSel.cells[0].innerText;
alert( MHG_ClientGrid1_RowSel.cells[0].innerText);

}


ببین چه مقداری رو بر میگردونه؟

2. آیا TEXTBOX شما از نوع :


<INPUT id="Hidden1" type="hidden" name="Hidden1" runat="server">

هست؟

3.توی رویداد کلیک قبل از فراخوانی تابع مربوط یه response.write بگیرید ببینید مقدار نداره یا توی تابع مشکلی هست؟

4.InnerText فقط و فقط در IE مقدار رو بر میگردونه.

موفق باشید

fatemeh rahimi
دوشنبه 08 بهمن 1386, 16:42 عصر
با تشکر از راهنماییتون:

1.شما دستور جاوا رو به این شکل عوض کن :
ببین چه مقداری رو بر میگردونه؟
1. محتوای ستون اول از سطر انتخابی رو بر میگردونه.

آیا TEXTBOX شما از نوع :

کد:
<INPUT id="Hidden1" type="hidden" name="Hidden1" runat="server">
هست؟
2. بله از همین نوع هست.

3.توی رویداد کلیک قبل از فراخوانی تابع مربوط یه response.write بگیرید ببینید مقدار نداره یا توی تابع مشکلی هست؟

4.InnerText فقط و فقط در IE مقدار رو بر میگردونه.
3,4. در مورد سوم با وجود این که متوجه منظورتون از اینکار نشدم ولی اینکار رو کردم،اما مشکل حل نشد!!!
در مورد 4 هم متوجه منظورتون نشدم!
برای حل مشکلم چیکار باید بکنم؟

raravaice
دوشنبه 08 بهمن 1386, 17:08 عصر
سلام

1.برنامه خودتون رو توی IE امتحان کنید

2.کد HTML و قسمت رویداد کلیک #C رو بزارین اینجا احتمالا یه جایی یه مورد کوچیک رعایت نمیشه.

موفق باشید

fatemeh rahimi
دوشنبه 08 بهمن 1386, 18:18 عصر
1.برنامه رو اجرا کردم،اجرا میشه .

fatemeh rahimi
دوشنبه 08 بهمن 1386, 18:19 عصر
ببخشید کد #c رو یادم رفت بذارم.

protectedvoid Button4_Click1(object sender, EventArgs e)
{
barresi.GetInfo(Hidden1.Value);
}

raravaice
دوشنبه 08 بهمن 1386, 18:57 عصر
سلام

1.شما توی این سورس که اصلا تابع Select1 رو هیچ جایی صدا نزدی پس چطور مقدار جایگزین میشه ؟

یا شاید منظورتون از :


ClientSelected="select()"
---------------------------------


این بوده؟!



ClientSelected="select1();"



در کل این select1() کی قراره باز خونی بشه تا مقادیر بره تو TEXTBOX شما؟

fatemeh rahimi
دوشنبه 08 بهمن 1386, 19:36 عصر
یا شاید منظورتون از :

کد:
ClientSelected="select()"---------------------------------
این بوده؟!

کد:
ClientSelected="select1();"

با عرض شرمندگی بله،منظورم همین بوده!(آخه من زیا به tag & script نویسی وارد نیستم):خجالت:
قراره بعد از این که کاربر سطر مورد نظر رو انتخاب کرد و بعد از کلیک بر روی یه button به نام "انتخاب" این تابع فراخوانی بشه!
البته منظورم این بوده،حالا میشه یا نه نمی دونم!!

raravaice
دوشنبه 08 بهمن 1386, 20:01 عصر
سلام

ببینید من با این کامپوننت شما تا حالا کار نکردم ولی با datagrid و gridview انجام دادم چنین کاری رو انجام دادم شما اگر هدفت اینه که متوجه بشی کار بر چه سطر هایی رو انتخاب کرده پیشنهاد میکنم این مقاله رو یه مطالعه کنید.
http://barnamenevis.org/forum/showthread.php?t=50594

وگرنه همون select() رو به select1() تبدیل کنید به احتمال خیلی زیاد مشکل حل میشه

البته همونطور که قبلا هم گفتم سعی کنید مقادیر رو با یه alert() توی جاوا اسکریپت چک کنید تا از صحت عملکرد مطمئن بشید.

موفق باشید

fatemeh rahimi
دوشنبه 08 بهمن 1386, 20:44 عصر
مقادیر رو با alert چک کردم . مقدار رو به صورت پیغام نمایش میده.ولی نمیدونم چرا داخل hidden نمی ریزه!
select() رو هم به select1() تبدیل کردم ، ولی مشکل حل نشد!!
در مورد کامپوننت هم کامپوننت خاصی نیست!یه نوع datagrid هست که فرقش با gridview خود asp اینه که کاربر هر جای سطر با ماوس کیک کنه،اون سطر انتخاب میشه.بدون استفاده از button،linkbutton،hyperlink،checkboxو...
برای این که از button,... در گریدم استفاده نکنم از این کامپوننت استفاده کردم،به همین خاطر هم به مشکل برخوردم .
مقاله ای هم که لینکش رو گذاشتین خوندم ولی مشکل منو حل نمی کنه!!
خواهشا اگه راهی به ذهنتون می رسه راهنمایی کنید،چون واقعا نیاز دارم و وقتم زیاد ندارم!

raravaice
دوشنبه 08 بهمن 1386, 21:14 عصر
سلام

کارهای زیر رو انجام بدید.

1.
hidden1.value رو با document.getElementById('Hidden1').value عوض کنید.

2.alert رو برای hidden1.value بزارید یعنی


alert(document.getElementById('Hidden1').value);

اگر بعد از این مورد مقدار صحیح در hidden1 قرار داشت مشکل از سمت برنامه های سرور هست

3.کد زیر رو از توی برنامه جاوا تون بردارید لازم نیست.


return hidden1.value;


4.برنامتون رو حتما و حتما توی IE تست کنید که البته فکر میکنم همینطوره

حالا سمت سرور :

1.بررسی کنید توی رویداد زیر برای hidden1 چه اتفاقی میافته ؟


onserverchange="Hidden1_ServerChange"


2.همونطور که گفتم رویداد button4 رو به شکل زیر عوض کنید تا ببینید مقدار درست میاد یا نه

کد شما :


protectedvoid Button4_Click1(object sender, EventArgs e)
{
barresi.GetInfo(Hidden1.Value);
}


تبدیل شود به :


protectedvoid Button4_Click1(object sender, EventArgs e)

{
response.write("<script>alert('" + Hidden1.Value + "');</script>");

}

حالا شما هر وقت روی کلید انتخاب کلیک کنی باید مقدار داخل hidden1 رو به صورت alert جاوا اسکریپت ببینی اگر اینطور بود مشکل از تابع barresi.GetInfo هست که باید اونو بررسی کنید.

اگر هیچ کدوم از موارد بالا عملی نشد که به احتمال زیر میشه Code Behind برنامتون هم بزارین

fatemeh rahimi
سه شنبه 09 بهمن 1386, 09:51 صبح
بابت راهنمایی های خوبتون ممنون،خیلی لطف کردین.
مشکل از تابع barresi.GetInfo بود، بعد از تغییراتی که گفتین مقدار Hidden1 رو نشون داد!
یعنی تعریف متدم اشکال داره؟چون من اینجا فقط متد رو صدا زدم!متد رو یه بار دیگه تعریف کنم؟

raravaice
سه شنبه 09 بهمن 1386, 11:07 صبح
سلام

نمیدونم متد شما قراره چه کاری انجام بده خودتون یه بررسی بکنید ببینید چرا درست کار نمیکنه.

موفق باشید

fatemeh rahimi
سه شنبه 09 بهمن 1386, 17:54 عصر
من بررسی کردم،به نتیجه نرسیدم.متدم رو فرستادم اگه میشه شما ببینید اشکالش کجاست؟ممنون.

raravaice
سه شنبه 09 بهمن 1386, 18:21 عصر
سلام

اگر شرط شما دنباله یک کلمه فارسی میگرده با ید یه N بهش اضافه کنید. یعنی :


cmd.CommandText="select code,subject,sharh from suggest where code=N'"+code+"'";
مقدار که توی ستون کد قرار میگیره چه مقادیریه مثال بزنید؟!

احیانا بعد از
SqlDataReader[FONT=&quot] dr=cmd.ExecuteReader();

یه dr.read; هم اضافه کنید

و بهتر میدونم که در انتها و بعد از خوانده شدن dr.close را به کار ببرید البته ربط به مشکل شما نداره ولی نرم افزار بهینه تر میشه
موفق باشید

fatemeh rahimi
سه شنبه 09 بهمن 1386, 20:43 عصر
واقعا بابت پیگیری و راهنمایی های خوبتون ممنون.
من مشکلم رو حل کردم ،البته با حذف GetInfo ،به جای صدا زدن GetInfo از یه روش دیگه استفاده کردم(چون متاسفانه وقت برای پیگیری اشکال GetInfo نداشتم!)
تو ستون کد مقدار فارسی نیست،با identity مقدار دهی شده.

mehrdad201
سه شنبه 09 بهمن 1386, 22:25 عصر
اگه از clientcallback استفاده کنید میشه.

آقای راد یه مقاله ای در مورد آجاکس رو بدون آجاکس تجربه کنید رو ببینید. اونجا با استفاده از جاوا اسکریپت با سرور ساید ارتباط برقرار میشه.

شما میتونی از این روش استفاده کنی و پارامترهاتو پاس کنی. از اون طرف هم میتونی مقدار بازگشتی رو دریافت کنی و نمایش بدی.