|
گروه اعتبار سنجی - ValidationGroup:
یکی از مشکلات استفاده از کنترلهای سنجش اعتبار یا Validation Controls اینه که اگر در یک صفحه چند گروه مختلف کنترل داشته باشیم و بخواهیم هر دسته از کنترلها رو با در شرایط خاصی چک کنیم به مشکل برخواهیم خورد. 1- بطور مثال اگر در یک صفحه دو دسته اطلاعات مختلف به همراه دو دکمه برای ثبت هر کدام از گروه های اطلاعاتی داشته باشیم نمی توان از کنترلهای اعتبار سنجی به روش پیش فرض استفاده کرد. 2- شاید صفحاتی رو که دارای دکمه ثبت و دکمه پاک کردن اطلاعات هستند رو دید، در این صفحات نیز مشکل اعتبار سنجی وجود داره! چرا؟ چون اگر کاربر بخواهد اطلاعات صفحه رو پاک کنه به مشکل اعتبار برخواهد خورد و کد مربوط به پاک کردن محتویات کنترلها اجرا نخواهد شد. 3- مثال آخر اینکه در صفحه ای که کنترلهای اعتبار سنجی وجود دارند و شما بخواهید از یک دکمه دیگر مثل نمایش اطلاعات اضافی استفاده کنید در کل در تمام صفحاتی که به غیر از دکمه اصلی که معمولا ثبت هست یک کنترل دارای خاصیت PostBack استفاده کنید، کنترلهای اعتبار سنجی شما به خطا خواهند رفت، زیرا جلوی هر PostBack صفحه را خواهند گرفت. پیشنهاد می کنم اگر با این مشکل قبلا روبرو نشدید حتما یک پروژه تمرینی بسازید تا بهتر مطالب رو درک کنید. برای این منظور یک پروژه وب جدید ایجاد کرده و دو textbox و دو button به اون اضافه کنید. می تونید از کنترلهای اعتبار سنجی Requierd Field Validator استفاده کنید و تنظیمات اون رو انجام بدید. یک کد برای دکمه ثبت و کدی جهت پاک کردن خصوصیات Text دو textbox بنویسید. اگر همه چی رو درست تنظیم کرده باشید، خواهید دید که تا زمانی که هر دو جعبه متن پر نشده باشند نمی توان از دکمه پاک کردن استفاده کرد. خوب حالا می ریم سراغ تمرین خودمون یعنی بکارگیری Validation Group: برای این منظور یک پروژه وب ایجاد کنید. دو asp:textbox به عنوان گروه اول اضافه کنید و برای این دو کنترل، دو کنترل asp:RequiredFieldValidator اضافه کنید و خصوصیت ControlToValidate آن دو را به دو کنترل TextBox مرحله قبل تنظیم کنید. دو کنترل asp:button به صفحه اضافه کنید، یکی با عنوان Submit و دیگری با عنوان Reset برای دکمه Reset کدی جهت پاک کردن دو کنترل جعبه متن مرحله قبل بنویسید. دو یا سه asp:textbox دیگر به صفحه اضافه کنید و مانند مراحل قبل برای آنها از asp:RequiredFieldValidator استفاده کنید. دو کنترل asp:button مانند مراحل قبلی اضافه کنید با همان نام. پروژه را اجرا نموده و از دکمه های Submit و Reset استفاده کنید. نتیجه را مشاهده کنید. این همان مشکل استفاده پیش فرض از کنترلهای اعتبارسنجی است. کد زیر لیست کنترلها و تنظیم خصوصیات اصلی آنها رو مشخص می کنه: 1. asp:TextBox ID="txtName" 2. asp:RequiredFieldValidator ID="rfvName" ControlToValidate="txtName" ErrorMessage="*" 3. asp:TextBox ID="txtFamily" 4. asp:RequiredFieldValidator ID="rfvFamily" ControlToValidate="txtFamily" ErrorMessage="*" 5. asp:Button ID="btnSubmit" Text="Submit" 6. asp:Button ID="btnReset" Text="Reset" 7. asp:TextBox ID="txtIDNo" 8. asp:RequiredFieldValidator ID="rfvIDNo" ControlToValidate="txtIDNo" ErrorMessage="*" 9. asp:TextBox ID="txtUserName" 10. asp:RequiredFieldValidator ID="rfvUserName" ControlToValidate="txtUserName" ErrorMessage="*" 11. asp:TextBox ID="txtPassword" 12. asp:RequiredFieldValidator ID="rfvPassword" ControlToValidate="txtPassword" ErrorMessage="*" 13. asp:Button ID="lblSubmitExtraInfo" Text="Submit Extra Info" 14. asp:Button ID="lblResetExtraInfo" Text="Reset Extra Info" کدهای مربوط به دو دکمه Reset: protected void btnReset_Click(object sender, EventArgs e) خوب حالا که مشکل کنترلهای اعتبارسنجی رو به روش پیش فرض استفاده شون دیدیم، میخواهیم اون مشکل رو با استفاده از خصوصیت ValidationGroup حل کنیم. بسیار روش ساده ای رو در پیش رو داریم. برای این منظور باید خصوصیت ValidationGroup هر گروه از کنترلها رو با یک مقدار مشخص مقداردهی کنیم. دو کنترل اعتبارسنجی گروه اول رو با دکمه Submit در یک گروه قرار میدیم (کنترلهای 2،4 و 5). سه کنترل اعتبارسنجی و دکمه Submit دوم را نیز در یک گروه دیگر قرار می دیم. (8،10،12 و 13){ txtName.Text = ""; txtFamily.Text = ""; } protected void btnResetExtraInfo_Click(object sender, EventArgs e) { txtIDNo.Text = ""; txtUserName.Text = ""; txtPassword.Text = ""; } پروژه رو اجرا کنید و نتیجه رو ببینید. کنترلهایی که باید تغییر پیدا کنند در زیر لیست شده اند: (به خاصیت ValidationGroup دقت کنید) 1. asp:RequiredFieldValidator ID="rfvName" ControlToValidate="txtName" ErrorMessage="*" ValidationGroup="groupName" برای راحتی و حصول نتیجه کامل یک برنامه نمونه آماده شده که می تونید اون رو از اینجا دانلود کنید.2. asp:RequiredFieldValidator ID="rfvFamily" ControlToValidate="txtFamily" ErrorMessage="*" ValidationGroup="groupName" 3. asp:Button ID="btnSubmit" Text="Submit" ValidationGroup="groupName" 4. asp:RequiredFieldValidator ID="rfvIDNo" ControlToValidate="txtIDNo" ErrorMessage="*" ValidationGroup="groupExtraInfo" 5. asp:RequiredFieldValidator ID="rfvUserName" ControlToValidate="txtUserName" ErrorMessage="*" ValidationGroup="groupExtraInfo" 6. asp:RequiredFieldValidator ID="rfvPassword" ControlToValidate="txtPassword" ErrorMessage="*" ValidationGroup="groupExtraInfo" 7. asp:Button ID="lblSubmitExtraInfo" Text="Submit Extra Info" ValidationGroup="groupExtraInfo" تگهای فارسی: مهدی ریزوندی، سی شارپ، سي شارپ، ای اس پی دات نت، وب، اعتبارسنجی، جعبه متن، دکمه، پروژه، کد نمونه
English Tags: Mehdi Rizvandi, Csharp, C sharp, C#, ASP.Net, Web, Web Development, Solution, Validation Group, Textbox, Button, Project, Sample Code
+
نوشته شده در شنبه چهاردهم اردیبهشت 1387ساعت 15:1 توسط کنستانتین
|
سلام خدمت کلیه دوستان همیشگی جادوی سی شارپ
با توجه به رشد روزافزون وب تصمیم گرفتم که مقاله ای در خصوص وب تهیه کنم و با توجه به اینکه MasterPage یکی از قابلیتهای بسیار عالی در 2005 هست تصمیم گرفتم مقاله ای رو در همین راستا آماده و به دوستانم ارائه کنم. یکی از مشکلات من در طراحی وب سایت در زمان ASP.NET 1.x این بود که بخوام قالب وب سایت رو عوض کنم، این به معنی تغییر کلیه صفحه های وب سایت و آپلود همه اونها بود که مشکلات این تغییر هم بسیار واضح هست، مثل اشتباهات کاربری، حجم زیاد دوباره کاری، آپلود صفحات زیاد و .... خوشبختانه در ASP.NET 2.0 با ظهور MasterPage این مشکل به راحتی مرتفع گردید. در خصوص صفحه اصلی یا همورن MasterPage دو مقاله تهیه شده، اولین مقاله شامل آشنایی، مفاهیم و امکانات این قابلیت هست و دومین مقاله به زبان بسیار ساده و به صورت قدم به قدم روش پیاده سازی و بهره مندی از این قابلیت رو شرح میده: مقله اول: صفحه اصلی در ASP.NET (در یک نگاه) فهرست:
مقاله دوم: مثال عملی استفاده از صفحه اصلی در ASP.NET (قدم به قدم) شامل دو مثال پیاده سازی صفحه اصلی دریافت مقاله مثال عملی استفاده از صفحه اصلی در ASP.NET (قدم به قدم) دریافت کدهای مقاله مثال عملی استفاده از صفحه اصلی در ASP.NET (قدم به قدم) پاسخ به سوالات عمار دوست عزیز: در خصوص بدست آوردن شماره سطر و ستون اشاره گر در یک کنترل RichText می تونید از متدها و خصوصیات زیر استفاده کنید: SelectionStart: این خصوصیت، مکان اشاره گر را به شما برمیگرداند (در کل متن) GetLineFromCharIndex: این متد شماره خطی مورد نظر شما را برمی گرداند (کافیست به اون شماره اندیس اشاره گر رو بدید) GetFirstCharIndexFromLine: شماره اندیس اولین کاراکتر یک خط رو برمی گردونه یک مثال هم نوشته شده که می تونید کد اون رو از اینجا دریافت کنید int startSelection = 0; در خصوص گرفتن تصویر از صفحه دسکتاپ می تونید از سایتهای زیر استفاده کنید. در دات نت به صورت مستقیم روشی برای این کار وجود ندارد و شما باید به صورت UnManaged این عمل رو انجام بدید. c-sharpcorner codeguru تگهای فارسی: مهدی ریزوندی، سی شارپ، سي شارپ، صفحه اصلی، مستر پیج، ام اس دی ان،نگهدارنده محتوا،ارجاع دادن به منابع خارجی،کنترلهای سرور، تم، مقاله، وب، دات نت 2، 2005، طراحی وب سایت، پیاده سازی، مثال، کد، برنامه، ریچ تکیت، سطر، ستون
English Tags: Mehdi Rizvandi, Csharp, C sharp, C#,MasterPage, MSDN, ContentPlaceHolder, Refrence to external resource, Server Controls, Theme, Research, Document, Web, Web 2.0, Dot Net 2.0, VS 2005, Web Site Design, Implementation, Sample, Code, Source Code, Programe, RichText, Row, Col, Managed Code
+
نوشته شده در یکشنبه نهم دی 1386ساعت 8:28 توسط کنستانتین
|
دوست عزیزی ایمیل فرستاده بود و سوالاتی پرسیده بود. سوالات به همراه جوابشون:
نحوه پر کردن داخل اشکال بسته: برای پر کردن داخل اشکال بسته از متدهای Fill کلاس Graphics استفاده می کنیم. این متدها عبارتند از: FillClosedCurve ، FillEllipse، FillPath، FillPie، FillPolygon، FillRectangle، FillRectangles، FillRegion از اسم هر کدوم از متدها پیداست که برای پر کردن داخل هر شکل از کدومشون باید استفاده کنیم. نحوه باز کردن فایلهای CHM: برای استفاده از فایلهای chm در C# باید از کلاس Help استفاده کنید. به کد زیر توجه کنید: Help.ShowHelp(this, @"D:\Ebooks\IntroducingMicrosoftASP.NET AJAX.chm"); رسم دوباره اشکال: اینکه چرا برنامه شما اشکال رسم شده رو بعد از Minimize نمی تونه رسم کنه، می تونه دلایل زیادی داشته باشه و بستگی به نحوه کد نویسی شما داره. هر زمان که ویندوز احساس کنه یک پنجره یا قسمتی از یک پنجره نیاز به رسم مجدد داره، اونو رسم می کنه و برای رسم اون کد رویداد Paint اون شی فراخوانی میشه. در صورتی که در گرداننده رویداد Paint کدهای لازم نوشته نشده باشه توانایی رسم مجدد اونها وجود نخواهد داشت. فولدر App_Code در ASP.NET : این فولدر به منظور محلی برای ذخیره کلاسها ، فایلهای .wsdl و Typed dataset ها تعبیه شده است و تمام مواردی که نام برده شد اگر در این محل ذخیره شوند در تمام صفحات Solution فابل دسترسی هستند. نکته قابل توجه در مورد این فولدر اینست که وقتی چیزی را در این مکان قرار میدهید VS2005 خودکار آنرا تشخیص میدهد و به نوع دلخواه و مطلوب آنرا کامپایل میکند. برای ایجاد این فولدر روی Solution کلیک راست کنید و Add folder=>App_code folder را انتخاب کنید. روی فولدر ایجادی نیز کلیک راست کرده و Add New Item را انتخاب کنید. در اینجا امکان انتخاب محدودی دارید بین فایلهایی از نوع کلاس ، متنی، دیتاست، گزارش و دیاگرام کلاس. برای مثال فایل کلاس را انتخاب کنید و نام آن را Calculator.cs بگذارید و در آن کد زیر را بنویسید : Using system; Public class Calculator { Public int Add (int a, int b) { Return (a+b); } } فقط آنرا ذخیره کنید و حالا میتوانید در هر صفحه ای از Solution از این کد استفاده کنید. مثلا یک صفحه .aspx بسازید و روی آن فقط یک Label بگذارید و در رویداد Page_Load آن کد زیر را بگذارید : Protected void Page_Load (object sender, System.EventArgs e) { Calculator myCalc = new Calculator (); Label1.Text = myCalc.Add (12, 12).Tostring (); } وقتی این صفحه .aspx را اجرا میکنید توجه کنید که از کلاس Calculator بدون هیچ مشکلی استفاده میکند و احتیاجی به کامپایل آن پیش از استفاده ندارد. در واقع درست پس از ذخیره این کلاس ، همزمان قابلیت IntelliSense در متدهایی که کلاس پوشش میدهد قابل استفاده است. حال فولدر App_Code و کلاس Calculator را دوباره باز کنید و متدی به نام Subtract را با کد زیر به آن اضافه کنید: Public int Subtract (int a, int b) { Return (a – b) ; } فایل را ذخیره کنید و به صفحه .aspx برگردید . توجه کنید که کلاس دوباره کامپایل شده و متد جدید نیز در صفحه از طریق IntelliSense قابل دسترسی است. هر آنچه در این فولدر گذاشته شود در یک اسمبلی تک کامپایل میشود. فایلهای کلاسی که در این فولدر هستند لازم نیست یک زبان ویژه را بکار ببرند یعنی اگر حتی تمام صفحات با VB نوشته شوند ، کلاس Calculator در فولدر App_Code می تواند به زبان C# باشد. البته اگر چند کلاس به زبانهای مختلف می خواهید داشته باشید نباید همه آنها را در ریشه این فولدر و در کنار هم قرار دهید. برای اینکه قادر باشید مثلا دو زبانVB و C# را کنار هم قرار دهید باید تغییرات زیر را انجام دهید : ابتدا در شاخه App_Code دو زیر شاخه جدید بسازید مثلا به نامهای VB و CS و کلاسهای موردنظرتان را در شاخه مربوطه قرار دهید. \ App_Code \ VB Add.vb \ CS Subtract.cs سپس در Web.Config (که باید خودتان به Solution اضافه کنید) بخش
در انتها دوباره از ققنوس عزیز سپاسگذارم .. جواب سوالهارو ایشون دادن... من فقط app_code folder رو نوشتم... بقیه اش تقصیر من نیس... :ی.... شاد باشین....
+
نوشته شده در پنجشنبه بیست و پنجم مرداد 1386ساعت 0:21 توسط آتاناز
|
تا حالا در مورد استفاده از بانکهای اطلاعاتی در برنامه های ویندوز صحبت کردیم. مبحث رو با استفاده از بانکهای اطلاعاتی در صفحات وب ادامه میدیم. در این مقاله از بانک اطلاعاتی Northwind استفاده می کنیم که بطور پیش فرض در SQL Server وجود داره. اگرم که Northwind نصب نشده و به هر دلیلی اونو تو سیستم ندارید بگید تا SQL اونو براتون تو وبلاگ بذارم تا دانلود کنید.
قبل از اینکه ادامه بدم فقط اینو به دوستان بگم که بزودوی ادامه مطالب مربوط به .NET 3 رو ادامه میدم. بعد از دو قسمت که در مورد WF صحبت خواهم کرد سراغ WPF میرم. در این مقاله سعی شده است تا بصورت قدم به قدم نحوه نمایش اطلاعات مورد نیاز در صفحات وب را باهم مرور کنیم.
حالا با اجرای برنامه، اطلاعات شما بصورت صفحه بندی شده و مرتب نمایش داده می شود. فیلتر کردن اطلاعات هدف از این مرحله امکان فیلتر کردن اطلاعات با توجه به شهر مورد نظر کاربر می باشد. بدین منظور باید مراحل زیر را قدم به قدم انجام دهید:
منبع: MSDN
+
نوشته شده در دوشنبه هجدهم تیر 1386ساعت 22:48 توسط ققنوس
|
كد نويسي مستقيم سي شارپ در صفحه هاي ASP.NET
بدون مقدمه مي رم سراغ اصل مطلب و از اينجا شروع مي كنم كه اين كد نويسي چي مزايايي نسبت به كدنويسي اصطلاحا Behind Code داره مزاياي كدنويسي مستقيم Inline codeing حتما شده كه يك صحفه اي رو آپلود كنيد و پس از آپلود بخواهيد فقط يك متد از متدهاي سايت يا متدهاي صفحه رو تغيير بديد. اگر اينطوري هست حتما ديديد كه بابت اين تغيير كوچيك بايد كل DLL را آپلود كنيد. تازه با اين خطهاي داغون مخابرات كه واويلاس. استفاده كدنويسي مستقيم باعث ميشه كه شما DLL رو دست نزنيد و تغيير مورد نظرتون رو روي سايت انجام بديد. كاربردهاي ديگه اي هم اين بحث داره كه من فقط روي مشكل ايراني بودن خودمون خواستم دقت كرده باشم. خوب حتما منتظرريد بدونيد كه چطوري ميشه كدهاي سي شارپ رو در متن صفحه ASP.NET نوشت. كار بسيار راحتي هست. كافيه كه يكبار اين كار رو تجربه كنيد و ديگه همه چي تمومه. براي شروع من مي خوام صفحه اول سايت رو به يك آدرس ديگه تغيير بدم (بطور مثال مشكلي در سايت پيش اومده كه فعلا نميشه سايت رو ديد و براي رفع اين مشكل بهترين كار اينه كه سايت رو Redirect كنم). دستور مورد نياز براي اين موضوع (Response.Redirect(URL است كه حتما با اون آشنايي داريد. منظور از URL آدرسي است كه صفحه شما بايد به اونجا حركت كنه. براي اين منظور كد مورد نظر براي رويداد Page_Load رو مي نويسيم. اگر با اين مشكلي داريد مي تونيد بريد داخل كد سي شارپ و بعد كد رويداد رو همراه با تعريف رويداد با هم كپي كنيد داخل متن صفحه. اما كجاي صفحه؟ خوب كافيه قبل از تگ HTML اون كد رو كپي كنيد. اما IE چطوري ميفهمه كه اين كد همون كد رويداد Page_Load هست؟ خوب اينهم خيلي ساده هست! يك تگ تعريف اسكريپت براي اون بذاريد و همه چي تمومه. البته اين تگ حتما بايد خصوصيت "runat="server رو داشته باشه. نمونه كد نوشته شده براي تغيير مسير به صفحه جديد در رويداد Page_Load:
+
نوشته شده در دوشنبه بیست و چهارم اردیبهشت 1386ساعت 19:55 توسط کنستانتین
|
استفاده از Server.Mappath براي بدست آوردن مسيرهاي بالاتر از ريشه سايت
چند وقت پیش یکی از دوستان یک هاست رایگان گرفته بود و در این هاست می خواست که مسیر پوشه بانک اطلاعاتی رو از طریق کد بدست بیاره. من هم یک کد کوچولو نوشتم و بعد فکر کردم که این موضوع ممکنه بدرد خیلی افراد دیگه ای بخوره. خوب اولین چیزی که به نظر میرسه اینه که خوب میشه از متد Server.MapPath استفاده کرد. اگر از این متد بخواهید استفاده کنید فقط می تونید مسیرهایی رو بدست بیارید که فقط داخل مسیر Webroot قرار دارند و این نکته استفاده از متد Server.MapPath هست. برای بدست آوردن مسیرهای بالاتر از ریشه سایت مثل DB که مورد نظر ماست باید یه چند خط کد اضافه بنویسید. برای این منظور ابتدا مسیر سایت رو بدست می آوریم که دقیقا مثلا Webroot هست بعد رشته مسیر بدست آمده رو برش می زنیم و Webroot رو از اون جدا می کنیم و بعد هم مسیر DB رو به اون اضافه می کنیم. با استفاده از همین روش می تونید هر مسیری رو که می خواهید در سرور هاست بدست بیارید. من برای راحتی کار این کد رو نوشتم: string dbFilePath = "";
+
نوشته شده در دوشنبه دهم اردیبهشت 1386ساعت 20:21 توسط کنستانتین
|
سلام این پست من خیلی با برنامه ریزی همراه نیست. مشغول گشت و گذار در اینترنت بودم که یک خبر جدید رو دیدم. گفتم بد نیست دوستان رو هم در جریان بگزارم.
سال گذشته کنفرانس MIX06 بود كه در خصوص Web 2.0 برگزار شد. امسال هم اين كنفرانس برگزار خواهد شد. موضوع كنفرانس MIX07 در خصوص موبايل و سيستمهاي برنامه ريزي داخلي دستگاه هاي همراه است. در كنار MIX07 يك كنفرانس ديگر هم برگزار مي شود با عنوان زير: Microsoft’s Mobile and Embedded DevCon (MEDC) 2007 اين كنفرانس مجموعه اي از بهترين ها رو در خودش جمع كرده و انجمن هاي زيادي به همديگر پيوسته و بروي موارد مختلفي تمركز خواهند داشت از جمله: آموزشهاي گروهي انجمن ها، با اشتراك گزاري دانش و ابزارهاي كاربردي توسعه دهنده كه بيش از 130 جلسه تكنيكال و آزمايشگاه را شامل مي شود. هزينه شركت در كنفرانس MEDC فقط 395 دلار و زمان اون سه روز در يكي از هتلهاي شهر لاس و گاس هست. شركت كنندگان MIX07 عبارتند از: توسعه دهندگان، طراحان، مبلغين و منتشرين، ارائه كنندگان نرم افزار و سرويسهاي نرم افزاري، رسانه و تكنولوژي، تلويزيون و كامپيوتر، كامپيوتر و دستگاه هاي همراه، توليد كنندگان و مصرف كنندگان. دو تا از شخصيتهاي اصلي اين كنفرانس عبارتند از: Ray Ozzie, Chief Software Architect, Microsoft Corporation آدرس سایتش اینه:
+
نوشته شده در سه شنبه هشتم اسفند 1385ساعت 10:15 توسط کنستانتین
|
|

