PDA

View Full Version : آموزش پاس دادن پارامتر به لیست و گرفتن آن



mona11
پنج شنبه 16 خرداد 1392, 23:51 عصر
با سلام خدمت developer های محترم.
فرض کنید شما 2 تا لیست دارین.اولی مربوط به استان هست.دومی هم مربوط به شهرهای هر استان.
یه مثال ساده زدم تا راحت راحت درکش کنید.انگار دو تا لیست parent Child دارم.
خب حالا میخوام از لیست (استان) پارامتر پاس بدم به فرم (شهر).

معمولیش اینه که وقتی لیست شهرها رو باز میکنم ،باید اول id استان مورد نظرم رو وارد کنم تا شهرهای اون استان رو ببینم.مثلا عدد 1 رو بزنم تا لیست شهرهای تهران رو ببینم.یا مثلا عدد 2 رو بزنم تا لیست شهرهای استان خراسان رو ببینم و غیره.

حالا راه بهتر اینه که در لیست(استان ها) من رو هر استانی کلیک کردم،بلافاصله لیست شهرها باز بشه و شهرهای مربوط به همون استان نمایش داده بشه.مثلا در لیست استان،اگر من روی استان خراسان کلیک کردم،لیست شهرها باز بشه و به طور خودکار عدد 2 در قسمت id استان قرار بگیره.(فرض میکنیم id استان خراسان ،مقدارش عدد 2 است)

حالا من کار ندارم به اینکه اطلاعات چطور ارسال میشه از لیست استان به لیست شهرها...
راهنمایی اینکه،میتونید از طریق فرم اینفوپت لیست استان ها همچین کاری رو بکنید.

من بیشتر قسمت سختشو میخوام توضیح بدم.(البته نه زیاد سخت :))

مهم قسمتی هست که باید لیست شهرها،پارامتر رو از لیست استان دریافت کنه.برای این منظور sharepoint designer رو باز میکنم و لیست شهرها رو انتخاب میکنم و روی گزینه ی NewForm.aspx کلیک میکنم تا به صفحه ویرایشش برم.
حالا باید یه اسکریپت رو بهش اضافه کنم تا بیاد و مقدار id استان رو از url صفحه بگیره و اون رو در فیلد id استان از لیست شهرها(همین لیست جاری که داریم روش کار میکنیم) قرار بده.


<script type="text/javascript">
function GetUrlParameter( name )
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null ) return "";
else return results[1];
}

document.forms['aspnetForm'].ctl00_m_g_0b7c7e8f_df58_4308_96f5_71ef6c5060c4_ct l00_ctl04_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_Text Field.value = GetUrlParameter(‘id’);


تابع GetUrlParameter مقدار id رو از url میگیره و اون رو در داخل فیلد مناسب قرار میده.

توضیح آخر اینکه این عبارت

ctl00_m_g_0b7c7e8f_df58_4308_96f5_71ef6c5060c4_ctl 00_ctl04_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00

مقدار id کنترلی هست که id استان در اون قسمت وارد میشه.شاید بپرسید اینو از کجا بدیت آوردم(البته میدونم همه یاد دارین و کسی نمیپرسه) :) ولی باید بگم که کافیه روی page کلیک راست کنید و به سورس صفحه مراجعه کنید.
راه راحت ترشم اینه که دقیقا روی همون فیلد کلیک راست کنید و گزینه inspect element رو بزنید تا تمام مشخصاتش رو نمایش بده.
برای امتحانشم میتونید اینجوری یه پارامتر رو ارسال کنید.

http://intranet.mycompany.com/sitedirectory/MySi:teLocation/Lists/MyList/Newform.aspx?id=3 (http://intranet.mycompany.com/sitedirectory/MySi:teLocation/Lists/MyList/Newform.aspx?contractNumber=00004000932)

که این عبارت باعث میشه تمام شهرهای استانی که id اون 3 هست نمایش داده بشه.

خیلی ممنون که وقت گذاشتید و این مقاله رو خوندید.

BandeKHoda
شنبه 25 خرداد 1392, 12:03 عصر
با تشکر برای مطلبی که نوشتی

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

احتمالا بقیه دوستان هم با این نوع مشکل ها مواجه شدن

در مورد این پست هم یه راه دیگه هست
تو اینو پث میشه لیست اولی رو به عنوان فیلتر روی لیست دومی اعمال کرد
نیاز به اسکریپت نویسی هم نیست. دشواری هم نداره

البته اگه امکان استفاده از فرم اینفو پث بجای ASP باشه

mona11
دوشنبه 27 خرداد 1392, 17:36 عصر
درسته ....
ولی منظورم بیشتر انجام این کار در view مورد نظر بود ، نه توی فرم اینفو پت...
البته منم موافق شمام.تا وقتی که راه حل عادی هست، استفاده از اسکریپت ممکنه کار رو خراب تر کنه :)