• مشکی
  • سفید
  • سبز
  • آبی
  • قرمز
  • نارنجی
  • بنفش
  • طلایی
انجمن ها > انجمن کامپیوتر > صفحه اول بحث
لطفا در سایت شناسائی شوید!
کامپیوتر (بازدید: 6541)
چهارشنبه 12/3/1389 - 11:29 -0 تشکر 203512
آموزش ASP

در این تاپیك قصد داریم دوستان و كاربران را ASP آشنا كنیم در این جا از مقدماتى شروع مى شود تا پیشرفته.

 با ما همراه باشید و پس از پایان سوالات خود را مطرح كنید. 

پنج شنبه 13/3/1389 - 11:19 - 0 تشکر 203784

قوانین زبان XML - قسمت ۲

آشنایی با قوانین زبان و نحوه نگارش سندهای XML

همه عناصر XML باید به طور صحیحی در یكدیگر قرار گرفته باشند.
نادرست قرار گرفتن برچسب ها برای XML معنی دار نیست.
در HTML بعضی از عناصر میتوانند به صورت نادرست در یكدیگر قرار بگیرند، شبیه این:

This text is bold and italic

در صورتی كه در XML این روش نادرست است و عناصر باید درست در یكدیگر قرار بگیرند، شبیه این:

This text is bold and italic

همه سندهای XML باید یك برچسب اصلی داشته باشند.
اولین برچسب در یك سند XML، برچسب اصلی است.
همه سندهای XML باید شامل یك جفت برچسب باشند كه عنصر اصلی را تعریف می كنند، و بقیه عنصرها باید در درون این عنصر اصلی قرار بگیرند.

همه عنصرها می توانند زیر عنصرهای دیگری داشته باشند، و زیر عنصرها باید به صورت درست در دل عنصر اصلی قرار گرفته باشند:



...

انتساب مقادیر همیشه باید در علامت نقل قول باشد
در XML حذف علامت نقل قول های انتساب مقادیر اشتباه است.
عناصر XML می توانند انتساب ها را در جفت های name/value داشته باشند، دقیقاُ مثل HTML.
به دو سند XML زیر توجه كنید، اولی نادرست و دومی درست است:



Tove
Jani
Reminder
Dont forget me this weekend!



Tove
Jani
Reminder
Dont forget me this weekend!

درست: date="2/2/2002" ، نادرست: date=2/2/2002

فضای خالی در XML
در XML فضاهای خالی حذف نمیشوند كه این برعكس HTML است. در HTML یك جمله شبیه:
This is a     test كه شامل فضای خالی است، به این شكل نمایش داده خواهد شد:

This is a test.

CR/LF در XML
در برنامه های تحت ویندوز برای ایجاد خط جدید در متن از جفت كاراكترهای CR/LF استفاده میشود، اما دربرنامه های Unix برای این كار فقط از كاراكتر LF استفاده میشود و در متن قرار می گیرد. در XML نیز از روش دوم استفاده می شود.

توضیحات در XML
XML نیز مانند HTML برای اضافه كردن خط های توضیح مؤلف از روش زیر استفاده می كند:

جمعه 14/3/1389 - 22:29 - 0 تشکر 204028

کنترل‌های پویا

چگونگی اضافه کردن یک کنترل کاربری (User Control) در مواقع لازم با استفاده از متد LoadControl


شما با استفاده از کنترل های ASP.net اجزاء مورد نظر برنامه وب خود را در یک صفحه وارد می کنید. این صفحات خود ممکن است تنها HTML و یا در برگیرنده کدهای net. باشند. کنترل ها بصورت ascx. ذخیره می شوند و برای استفاده از آنها بصورت زیر با صفحه aspx شما پیوند می خورند و بصورت یک tag ساده می توان آنها را به هر قسمت از صفحه اضافه کرد.

<%@ Register TagPrefix="uc1" TagName="HeaderUserControl" Src="HeaderUserControl.ascx" %>
...


و اما شاید شما بخواهید فقط در مواقعی خاص این کنترل ها load شوند. مثلا هنگام اجرای متد Page_Load و یا Button_Click ، در صورت درست بودن نام کاربری و یا به هر شکل دیگری. چاره چیست؟! خوشبختانه کتابخانه net. با متد LoadControl خود میتواند پاسخ گوی شما باشد (در ضمن این را هم فراموش نکنید که هر tag ساده html و یا کنترل سمت سرور ASP. net را با زبان برنامه نویسی net. هم می توان ایجاد کرد). فرض کنید ما کنترلی به اسم FeaturedProduct.ascx داریم. بدین صورت ابتدا بارگذاری و سپس اضافه خواهد شد:

Control FeaturedProductUserControl = LoadControl("FeaturedProduct.ascx");

Controls.Add(FeaturedProductUserControl);
البته اشکال این تکنیک این است کنترل دقیقا محلی که شما می خواهید اضافه شود نمایش داده نمی‌شود که خب، این هم با استفاده از place holder"s controls collection قابل حل هست. بدین شکل:

PlaceHolderLeftMenu.Controls.Add(FeaturedProductUserControl);

مطمئناً این تکنیک برای کسانی که برنامه های کاربردی تحت وب را پیاده می کنند جهت مدیریت بهتر، استفاده از صفحات کمتر، حالت های مختلف درخواست‌ها و کلاً قالب بندی CMS‌ها بسیار مفید خواهد بود، چنانچه که پروژه ای مثل IBuySpy نیز از این تکنیک بهره می‌برد.

شنبه 15/3/1389 - 15:45 - 0 تشکر 204097

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

پنج شنبه 3/4/1389 - 22:47 - 0 تشکر 207179

صدا زدن رویدادهای User Control از داخل فرم‌های وب

استفاده از کنترل‌های کاربری یا User Control در میان برنامه نویسان ASP.NET طرفداران زیادی دارد. با استفاده از UC می توان مجموعه ای از کنترلهای سمت سرور یا html را در جاهای مختلف از صفحات aspx یا داخل UCهای دیگر استفاده کرده و از نوشتن کدهای تکراری اجتناب نمود. در بسیاری از موارد لازم می‌شود که بتوانیم رویدادی که درون یک UC اتفاق می‌افتد را در وب فرم مادر اصطلاحاً Handle کنیم. این مقاله به نحوه چگونگی انجام این کار می‌پردازد.

استفاده از کنترل‌های کابری UCها (User Control) در میان برنامه نویسانASP.NET طرفداران زیادی دارد. با استفاده از UC می توان مجموعه ای از کنترلهای سمت سرور یا html را در جاهای مختلف از صفحات aspx یا داخل UCهای دیگر استفاده کرده و از نوشتن کدهای تکراری اجتناب نمود. همچنین می توان تنها قسمتی از یک Web Form را با کمک UCها Cache نمود (Fragment Caching). یکی دیگر از استفاده‌های UCها بکارگیری آنها بعنوان یک کنترل سمت سرور می باشد. که در این صورت می توان برای UC مورد نظر Methodها و Propertyهای مختلفی را بسته به نیاز تعریف کرده و از آنها استفاده نمود. آن دسته از توابعی که اکثر کنترلهای سمت سرور از آن برخوردار می باشند، توابع رویداد یا همان Eventها می باشند. مثل تابع رویداد فشردن یک کنترل از نوع Button.

اکنون می خواهیم بدانیم که در UCها چگونه می توان توابع رویداد تعریف کرده و از آنها استفاده نمود. به دو طریق می توان برای یک UC تابع رویداد تعریف کرد. روش اول تعریف یک تابع رویداد داخلی برای یک UC می باشد. که در این صورت تابع رویداد تنها در داخل UC صدا زده می‌شود. اما روش دوم تعریف توابع رویداد خارجی است به طوریکه بتوان این توابع را از خارج UC نیز صدا زد. بحث اصلی این مقاله پیرامون همین نوع از توابع رویداد یا Event می باشد.

برای درک بهتر مطلب بهتر است که به طرح یک مثال بپردازیم. فرض کنید که می خواهید یک کنترل که عملکرد یک منو را داشته باشد با استفاده از UC ایجاد کنید. این منو دارای آیتم‌های مختلفی است که هر آیتم نیز ایندکس خاص خود را دارد. حال می خواهیم یک Event برای این منو تعریف کنیم بطوریکه بتوانیم آن را از همان جایی که UC را استفاده می کنیم، صدا بزنیم. برای ایجاد این کنترل قبل از هر چیز بهتر است که از یک سرور کنترل تکرار شونده و داده پذیر (Data Bound) مثل Repeater ، DataList و یا DataGrid استفاده کنیم. در این مقاله ما از کنترل DataList استفاده می کنیم.

فرض را بر آن می گیریم که خوانندگان این مقاله با نحوه استفاده از کنترل DataList آشنایی دارند. لذا بیشتر به توضیح کدهای مربوط به اضافه کردن تابع رویداد خارجی می پردازیم.

بسیار خوب، در ابتدا در کلاس مربوط به UC منو، یک کلاس مثلاً بنام SelectionChangedEventArgs تعریف می کنیم. این کلاس می بایست حتماً از کلاس System.EventArgs ارث بری داشته باشد. فعلاً برای این کلاس یک متغیر که نشان دهنده ایندکس انتخاب شده از منو می باشد را تعریف می کنیم. بعداً شما می‌توانید متغیرها و متدهای مورد نظر خود را به این کلاس اضافه کنید. پس تا اینجای کار کلاسی همانند زیر در داخل کلاس مربوط به UC منو داریم.

public class SelectionChangedEventArgs : EventArgs
{
public int SelectedIndex;
}

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

public delegate void SelectionChangedEventHandler(object sender, SelectionChangedEventArgs e);
public event SelectionChangedEventHandler SelectionChanged;

برای تحقق یافتن این خواسته‌مان نیاز به یک تابع رویداد داخلی نیز داریم. از آنجا که هدف ما مشخص کردن انتخاب آیتم های کنترل منو می باشد، پس می بایست که تابع رویداد مربوط به تغییر ایندکس انتخاب شده را برای کنترل DataList موجود در UC را اضافه کنیم. پس از انجام این کار نوبت به تعریف تابع اصلی مان می‌رسد. یعنی تابعی که در آن مقدمات مربوط به صدا زدن Event خارجی صورت گیرد. این تابع را بصورت زیر تعریف می کنیم.

public void SelectMenuItem(int index)
{
dlMenu.DataBind();
SelectionChangedEventArgs ev = new SelectionChangedEventArgs();
ev.SelectedIndex = index;
if(SelectionChanged != null)
SelectionChanged(this, ev);
}

همانطور که می‌بینید در این تابع ابتدا کنترل DataList تغذیه می‌شود. سپس یک نمونه از کلاسی که چندی قبل تعریف کردیم ایجاد می‌شود و تنها عضو این کلاس که مشخص کننده ایندکس انتخاب شده می باشد توسط تنها پارامتر این تابع مقداردهی می‌شود. پس از آن در صورت null نبودن تابع رویداد SelectionChanged که مربوط به تابع SelectionChangedEventHandler که خود یک delegate می‌باشد صدا زده می‌شود. این کار باعث می‌شود تا تابع رویدادی که برای این کنترل منو در هرکجا تعریف کرده‌ایم، صدا زده شود.

پنج شنبه 3/4/1389 - 22:51 - 0 تشکر 207180

لذت برنامه نویسی تحت وب با ASP.NET 3.5: تغییر Master Page ها بصورت پویا

در قسمت اول از مجموعه این مقاله ها آموختید كه چگونه می توان بوسیله Master Page ها در ASP.NET 3.0 به سادگی طرح بندی های مختلفی را برای فرم های وب ایجاد كرد. تحت شرایطی بعضاً ممكن است به تغییر یك Master Page بصورت پویا نیاز پیدا كنیم. مثلاً ممكن است در یك وب سایت برای موضوعات مختلف طرح بندی سایت تغییر كند. این مقاله را بخوانید تا روش انجام این کار را یاد بگیرید.

تحت شرایطی بعضاً ممكن است به تغییر یك Master Page بصورت پویا نیاز پیدا كنیم. مثلا" ممكن است در یك وب سایت برای موضوعات مختلف طرح بندی سایت تغییر كند. بدیهی است كه برای این منظور بسته به نیازمان Master Page های مختلفی را در ابتدای كار می بایست ایجاد كنیم. در این مقاله می آموزید كه چگونه می توان بصورت پویا یك Master Page را با دیگری جایگزین كرد.

برای این منظور Master Page دوم را به وب سایتمان كه در قسمت اول مقاله ایجاد كردیم اضافه كرده و یك كنترل button برای سوئیچ كردن بین Master Page ها اضافه می كنیم. از آنجا كه Master Page دوم بسیار شبیه اولی می باشد لذا تنها كافیست یك كپی از آن تهیه كرده و برای تمایز، رنگ پس زمینه آن را تغییر دهیم.

برای این منظور مراحل زیر را دنبال كنید:

١- در Solution Explorer بر روی Master1.master راست كلیك كرده و گزینه كپی را انتخاب كنید.

٢- بر روی نام وب سایت راست كلیك كرده و گزینه paste را انتخاب كنید.

٣- Master Page كپی شده را به Master3.master تغییر نام دهید.

٤- فایل Master3.master را در حالت Html باز كرده و در قسمت Master2 ،@Master را به Master3 تغییر دهید.

Master Language="C#" CompileWith="Master3.master.cs" ClassName="Master3_master@"

٥- به حالت Design View بروید.

٦- در پنجره properties از لیست باز شو كه در قسمت بالای این پنجره قرار دارد گزینه DOCUMENT را انتخاب كنید.

۷- مقدار BgColor را به دلخواه تغییر دهید.

۸- Master Page جدید را در حالت سورس كد باز كنید و نام كلاس را از Master1_master به Master3_master تغییر دهید.



برای اضافه كردن یك button جهت تغییر پویا Master Page ها مطابق زیر عمل كنید:

١- یك كنترل از نوع LinkButton به پایین صفحه Master3.master اضافه كرده و برای آن یك نام انتخاب كنیدمثلا" “Change to MP1”

٢- بر روی button دو بار كلیك كنید تا تابع رویداد كلیك آن ایجاد شود. سپس كد زیر را به آن اضافه كنید.

void LinkButton1_Click(object sender, EventArgs e)

{

Session("masterpage") = "MasterPage1.master";

Response.Redirect(Request.Url.ToString());

}

كد فوق موجب بار گزاری نام Master Page اول در Session شده و سپس صفحه جاری دوباره فراخوانی می شود.

٣- صفحه Master1.master را باز كنید و یك كنترل LinkButton مطابق مراحل فوق به آن اضافه كنید و نوشته روی آن را “Change to MP2” قرار دهید.

٤- در تابع مربوط به رویداد كلیك آن كد زیر را اضافه كنید.

void LinkButton1_Click(object sender, EventArgs e)

{

Session("masterpage") = "MasterPage2.master";

Response.Redirect(Request.Url.ToString());

}

٥- صفحه About.aspx را در حالت سورس كد باز كنید.

٦- تابع Page_PreInit را اضافه كرده و كد زیر را در آن بنویسید.

كد فوق باعث جایگزین كردن محتویات [Session[“masterpage” با مقدار مشخصه Me.MasterPageFile می شود. این كار می بایست حتما" در تابع Page_PreInit صورت گیرد. زیرا در یك WebForm قبل از هرگونه مقدار دهی اولیه می بایست تكلیف Master Page آن مشخص شود. و بهترین گزینه تابع Page_PreInit می باشد. لذا قرار دادن این كد در توابعی مثل Page_Init و Page_Load كه بعد از تابع Page_PreInit فراخوانده می شوند، تأثیر گذار نخواهد بود.

حال بعد از اعمال مراحل فوق حاصل كار را مطابق زیر امحان می كنیم:

١- CTRL+F5 را فشار دهید تا صفحه home در browser نمایان شود.

٢- به صفحه About رفته و بر روی Chage to MP2 کلیک کنید. مشاهده می کنید که صفحه About با Master2.master باز خواهد شد.

٣- بر روی Change to MP1 کلیک کنید. می بینید که اینبار صفحه About با Master1.master باز می شود.

مراحل فوق یك مثال بسیار ساده برای تغییر Master Page ها بصورت پویا را شامل می شدند. امروزه بعضی از وب سایتها مثل MSN.com این قابلیت را برای كاربران عضو مهیا ساخته اند كه بتوانند طرح بندی صفحه مربوط به خود را بصورت پویا براحتی تغییر دهند. مسلماً استفاده از Master Page ها برای این منظور كار را بسیار ساده و سریع خواهد نمود.

يکشنبه 13/4/1389 - 15:52 - 0 تشکر 209202

ایجاد یک کنترل - قسمت اول

کنترل یک عنصر ویژوال می باشد که می توان آنرا در زمان طراحی برروی فرم قرار داد و در صورت لزوم خاصیت های آن را تغییر داد. این مقاله به بررسی چگونگی ساخت یک کنترل برای WinForm می پردازد که با اندکی تغییرات می تواند عینا برای فرم های وب نیز مورد استفاده قرار گیرد.

کنترل یک عنصر ویژوال می باشد که می توان آنرا در زمان طراحی برروی فرم قرار داد و در صورت لزوم خاصیت های آنرا تغییر داد. در این قسمت استانداردهای لازم برای ایجاد یک کنترل و روش های آن شرح داده می شود.


ایجاد یک پروژه

بمنظور ایجاد یک کنترل جدید شما نیازمند ایجاد یک پروژه می باشید. در این حالت شما دارای دو انتخاب می باشید: Windows Control Library و Web Control Library. بسته به نوع کنترلی که می خواهید طراحی کنید یکی از موارد فوق را انتخاب نمایید. پس از ایجاد پروژه می توانید در صورت لزوم فایل کنترل ایجاد شده (UserControl1.cs) را پاک کرده و یک کلاس جدید به پروژه اضافه نمایید.


ارث بری از کنترل موجود

برای ایجاد یک کنترل جدید می توانید در صورت لزوم از کنترلهای موجود ارث بری کرده و آنها را بر حسب نیاز تغییر دهید و یا یک کنترل را از ابتدا ایجاد نمایید.

public class ControlName : System.Windows.Froms.Panel
{
...

افزودن خصوصیت (Property)

بمنظور ایجاد خصوصیت جدید شما نیازمند تعریف یک متغییر خصوصی و یک تابع عمومی برای مقداردهی و اخذ مقدار خصوصیت می باشید.

private System.Windows.Forms.Border3DSide borderSide;

public System.Windows.Forms.Border3DSide BorderSide
{
get { return this.borderSide; }
set 
{
if ( this.borderSide != value )
{
this.borderSide = value;
this.Invalidate(); // force repaint control at design time
}
}
}

پس از تعریف خصوصیت جدید ترجیحا آنرا در سازنده کلاس مقداردهی اولیه نمایید.

public ControlName
{
this.borderSide = System.Windows.Froms.Boder3DSide.All;
this.border3DStyle = System.Windows.Froms.Border3DStyle.Etched;
}

بازنویسی متدهای ارث برده شده (override)

در صورتیکه کنترل ایجاد شده را از یک کنترل موجود ارث برده باشید، ممکن است نیازمند بازنویسی کد تعدادی از متدهای کنترل اولیه باشید.

protected override void OnPaint(System.Windows.From.PaintEventArgs e)
{
base.OnPaint(e);

System.Windows.Froms.ControlPaint.DrawBorder3D (
e.Graphics,
this.ClientRectangle,
this.border3DStyle,
this.borderSide );
}

بمنظور پیدا کردن تمامی متدهای موجود کلاس ارث برده شده می توان از Object Browse استفاده نمود و پس از پیدا کردن متد مورد نظر روی آن کلیک راست کرده و Override را از گزینه Add انتخاب نمایید.


افزودن صفات مربوط به خصوصیت ها به منظور نمایش آن در محیط طراحی

بمنظور نمایش صحیح خصوصیت های نوشته شده در پنجره Properties محیط طراحی باید چندین صفت مربوط به خصوصیت را تنظیم نمود.

Bindable: با دادن مقدار true به عنوان پارامتر به این تابع پس از هر بار تغییر این خصوصیت، در محیط طراحی سیگنالی به معنی اینکه مقدار این خصوصیت تغییر کرده صادر می گردد و کلاس designer شما (در ادامه توضیح داده خواهد شد) را آگاه خواهد کرد.

DefualtValue: با دادن مقدار پیش فرض مورد نظر برای این خصوصیت در محیط طراحی مقدار ذکر شده به عنوان پیش فرض نمایان می گردد.

Category: با دادن یک رشته به عنوان پارامتر به این تابع دسته قرار گرفتن خصوصیت در پنجره Properties محیط طراحی مشخص می گردد.

Description: با دادن یک رشته به عنوان پارامتر به این تابع در صورت انتخاب خصوصیت در لیست Properties، توصیف مشخص شده در پایین این پنجره نمایش داده خواهد شد.

ReadOnly: با true قرار دادن پارامتر این متد خصوصیت مورد نظر در محیط طراحی بصورت فقط خواندنی نمایش داده می شود.

Editor: این تابع دو پارامتر می گیرد. اولین پارامتر مشخص کننده نوع Editor و پارامتر دوم مشخص کننده نوع پایه Editor می باشد (در ادامه توضیح داده خواهد شد).

[Bindable(true), Category("Border Options"),
DefaultValue(System.Windows.Forms.Border3DSide.All),
Description("Specifies the sides of the panel to 
apply a three-dimensional border to.")]
public System.Windows.Forms.Border3DSide BorderSide
{
...

برو به انجمن
انجمن فعال در هفته گذشته
مدیر فعال در هفته گذشته
آخرین مطالب
  • آلبوم تصاویر بازدید از کلیسای جلفای...
    آلبوم تصاویر بازدید اعضای انجمن نصف جهان از کلیسای جلفای اصفهان.
  • بازدید از زیباترین کلیسای جلفای اصفهان
    جمعی از کاربران انجمن نصف جهان، در روز 27 مردادماه با همکاری دفتر تبیان اصفهان، بازدیدی را از کلیسای وانک، به عمل آورده‌اند. این کلیسا، یکی از کلیساهای تاریخی اصفهان به شمار می‌رود.
  • اعضای انجمن در خانه شهید بهشتی
    خانه پدری آیت الله دکتر بهشتی در اصفهان، امروزه به نام موزه و خانه فرهنگ شهید نام‌گذاری شده است. اعضای انجمن نصف جهان، در بازدید دیگر خود، قدم به خانه شهید بهشتی گذاشته‌اند.
  • اطلاعیه برندگان جشنواره انجمن‌ها
    پس از دو ماه رقابت فشرده بین کاربران فعال انجمن‌ها، جشنواره تابستان 92 با برگزاری 5 مسابقه متنوع در تاریخ 15 مهرماه به پایان رسید و هم‌اینک، زمان اعلام برندگان نهایی این مسابقات فرارسیده است.
  • نصف جهانی‌ها در مقبره علامه مجلسی
    اعضای انجمن نصف جهان، در یك گردهمایی دیگر، از آرامگاه علامه مجلسی و میدان احیا شده‌ی امام علی (ع) اصفهان، بازدیدی را به عمل آوردند.