تبلیغات
آموزشASP.NET - مطالب آذر 1389
 
فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 

شاید تا به حال به این فکر افتاده باشید که برای سایت خود یک مدیریت فیلتر خودکار بسازید ، با این کار شما قادر خواهید بود کلمات مورد نظرتان را در سایت سانسور کنید .
خوشبختانه در Asp.NET این کار توسط خاصیت Filter کلاس HttpResponse انجام می شود .
نحوه کار به این صورت هست که ابتدا یک کلاس جدید ایجاد کرده که از کلاس System.IO.Stream ارث بری کند سپس متد Write این کلاس را Ovveride می کنیم :

 using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;



ادامه مطلب


نوع مطلب :
برچسب ها :
لینک های مرتبط :


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

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

برای شروع کار ابتدا یک جدول داخل بانک اطلاعاتی SQL Server به نام TBLMenu با فیلد های زیر ایجاد نمایید :

MENUID

PRENTID

MENUNAE

اکنون اطلاعاتی مشابه اطلاعات زیر وارد نمایید :

درباره ما

تماس باما

آموزش

آموزش ریاضی

اموزش فیزیک

آموزش......

همانطور که ملاحظه می کنید ParentID در برخی از رکورد ها برابر 0 و در برخی دیگر عددی اختیار کرده اند ، اگر کمی دقت نمایید متوجه می شوید که عدد به این معنی است که این منو منوی اصلی است و زیر منو نمی باشد ، منوهایی که ParentID آن ها عددی غیر از 0 اختیار کرده اند زیر منو هستند و ParentID مشخص می کند که این منو زیر منوی کدام منو می باشد .

به عنوان مثال منوی "آموزش ریاضی" با کد 4 زیر منوی "آموزش" می باشد چرا که ParentID آن 3 است ، و همچنین "ریاضی عمومی 1 " زیر منوی "آموزش ریاضی" است و....

کار ما با بانک اطلاعاتی تمام شده است ، اکنون میخواهیم یک فایل XML ایجاد کنیم که اطلاعات فوق به صورت شاخه ای در آن ایجاد شوند و در نهایت این فایل XML به یک منو بایند خواهد شد .

برای خواندن و نوشتن در فایل XML فضا نام زیر را اضافه نمایید :

using System.Xml;

 

همچنین برای دریافت اطلاعات از بانک اطلاعاتی نیز به دو فضا نام زیر نیاز داریم :

using System.Data;
using System.Data.SqlClient;

 

اکنون یک تابع که خروجی آن یک DataTable است ایجاد می نمایید ، این تابع وظیفه دریافت اطلاعات از بانک اطلاعاتی را به عهده دارد :

    public DataTable GetMenuByParentID(int parentId)
    {
        DataTable dt = new DataTable();
        using (SqlConnection con = new SqlConnection("data source=(local);initial catalog=menu;integrated security=true"))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("select * from TBLMenu where ParentID=@ParentID", con);
            cmd.Parameters.AddWithValue("@ParentID", parentId);

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);

            con.Close();

            return dt;
        }
    }

 

همانطور که ملاحظه می کنید این تابع اطلاعات را با شرط بر روی ParentID درخواست می نماید ، اگر عدد 0 به این تابع پاس شود منوهای اصلی و اگر کد یک منو پاس شود تمام زیر منوهای آن دریافت می شود .

اکنون یک شی از کلاس XmlWriter به صورت Global ایجاد می کنیم و یک متد جهت ایجاد فایل Xml و نوشتن در آن می نویسیم :

    XmlWriter writer;
    public void CreateMenu()
    {
        using (writer = XmlWriter.Create(Server.MapPath("Temp\\Menu.XML")))
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("Menu");

            CreateNodes(0);

            writer.WriteEndDocument();
        }

    }

 

این متد پس از ایجاد فایل XML ، یک تگ به نام Menu باز می کند سپس متد CreateNodes که در ادامه به آن می پردازیم را با ورودی 0 که همان منوهای اصلی می باشند فراخوانی می نماید و در انتها تگ باز شده را می بندد.

اکنون به سراغ تابع بازگشتی CreateNodes می رویم که مهمترین جزء این مقاله است (همانطور که می دانید تابع بازگشتی تابعی است که خود را داخل خود فراخوانی می کند) :

    public void CreateNodes(int parentId)
    {
        DataTable dt = GetMenuByParentID(parentId);
        foreach (DataRow dr in dt.Rows)
        {

            writer.WriteStartElement("Node");

            writer.WriteStartAttribute("ID");
            writer.WriteValue(dr["MenuID"].ToString());
            writer.WriteEndAttribute();


            writer.WriteStartAttribute("Name");
            writer.WriteValue(dr["MenuName"].ToString());
            writer.WriteEndAttribute();

            CreateNodes(Convert.ToInt32(dr["MenuID"]));

            writer.WriteEndElement();
        }
    }

 

این تابع با دریافت ParentID تمام زیر منو ها را به صورت تگ داخل فایل XML توسط XmlWriter می نویسد .

ابتدا تابع GetMenuByParentID فراخوانی شده و اطلاعات از دیتابیس دریافت می شود سپس داخل یک حلقه سطر به سطر رکوردها خوانده شده و اطلاعات هر رکورد به صورت تگ نوشته می شود ، قبل بسته شدن تگ Node تابع خودش را با ParentID جاری فراخوانی می کند ، این کار باعث می شود اگر این منو دارای زیر منو هست ، زیر منو ها هم نوشته شوند .

اکنون کافیست در رویداد دلخواه متد CreateMenu را فراخوانی کنیم :

    protected void Button1_Click(object sender, EventArgs e)
    {
        CreateMenu();
        Response.Redirect("~/");

    }

 

فایل Xml شما آمادست ، اکنون خیلی ساده این فایل را توسط XmlDataSource به یک Menu یا TreeView بایند می کنیم :

<asp:XmlDataSource ID="XmlDataSource1" runat="server" XPath="/Menu/Node" DataFile="~/Temp/Menu.xml">
    </asp:XmlDataSource>
    <div style="direction: rtl">
        <asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1" LineImagesFolder="~/TreeLineImages"
            ShowLines="True">
            <DataBindings>
                <asp:TreeNodeBinding DataMember="Node" TextField="Name" ValueField="ID" />
            </DataBindings>
        </asp:TreeView>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Bind" />
    </div>

 

همانطور که ملاحظه می کنید از یک XMLDataSource استفاده کردیم و آن را به فایل Menu.Xml که در پوشه Temp قرار دارد بایند کردیم ، خاصیت Xpath به دیتاسورس می گوید که اطلاعات را از تگ Node به بعد به نمایش بگذارد .

سپس از یک کنترل TreeView برای نمایش اطلاعات استفاده کردیم (میتوانیم از منو استفاده کنیم) ، نکته مهم تگ TreeNodeBinding است ، در این تگ خاصیت DataMember برابر Node قرار داده شده است چرا که اطلاعات تگ Node قرار است نمایش داده شود سپس خاصیت TextField و ValueField نیز برابر خواص مورد نیاز ما ست شده است .

دقت نمایید که پوشه Temp باید مجوز Write داشته باشد .

 



ادامه مطلب


نوع مطلب :
برچسب ها :
لینک های مرتبط :


چهارشنبه 17 آذر 1389 :: نویسنده : ارش کاکاوند


در خیلی از سایت ها در هنگام عضویت یا استفاده از یک سرویس خاص شاهد تصویری هستید که شامل ترکیبی از کلمه و حروف و یا اعداد تصادفی است و شما باید متن داخل عکس را داخل یک تکس باکس وارد کنید تا اجازه ادامه عملیات را دریافت کنید .

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

 



ادامه مطلب


نوع مطلب :
برچسب ها :
لینک های مرتبط :


چهارشنبه 17 آذر 1389 :: نویسنده : ارش کاکاوند


Trigger نوعی رویه ذخیره شده است که پس از یک رویداد اجرا می شود ، برخلاف Stored Procedure که حتما باید فراخوانی شود Trigger ها قابل فراخوانی نبوده و به صورت خودکار در واکنش به اعمال Insert , Update , Delete (قبل یا بعد از تراکنش) اجرا می شوند .

واضح است که چنین رویه بر خلاف SP نمیتواند پارامتر ورود و خروجی بپذیرد و اطلاعات خود را از رکورد مورد نظر (رکوردی که Insert , Update یا Delete بر روی آن صورت گرفته که اصطلاحا Updated , Inserted و Deleted خوانده می شود)

مهمترین کاربر Trigger ها به شرح زیر است :



ادامه مطلب


نوع مطلب :
برچسب ها :
لینک های مرتبط :


این برنامه یک مثال خوب از نحوه باز کردن ، خواندن و نوشتن داخل یک فایل است که نیاز به هیچ نوع بانک اطلاعاتی هم ندارد . این فایل را با اسم counter.asp ذخیره کنید و در کنارش یک فایل متنی ساده به کمک NotePad و به نام database.inc ایجاد کنید و در سطر اولش هم عدد صفر یا هر عدد دیگری را که مایلید پیش‌فرض شمارنده شما باشد بنویسید.  فراموش نکنید که سطح دسترسی لازم برای نوشتن را نیز به این فایل بدهید . با کمی ابتکار می توان این شمارنده را به نوع گرافیکی تبدیل کرد. حتی می توانید به تعداد صفحات سایت ، فایل ایجاد کنید تا تعداد مشاهده هر صفحه را به تنهایی ردیابی کنید.

asp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزش



ادامه مطلب


نوع مطلب :
برچسب ها :
لینک های مرتبط :




درباره وبلاگ

سلام من آرش کاکاوند دانشجوی رشته کامپیوتر هستم و ورود شما رابه دنیای aspخوش امدمیگم.حتما نظر بدین تا من کارم رو بهتر ادامه بدم

مدیر وبلاگ : ارش کاکاوند
مطالب اخیر
نویسندگان
صفحات جانبی
نظرسنجی
شما کدام یک از برنامه های زیر را برای طراحی وب انتخاب می کنید؟








جستجو

آمار وبلاگ
کل بازدید :
بازدید امروز :
بازدید دیروز :
بازدید این ماه :
بازدید ماه قبل :
تعداد نویسندگان :
تعداد کل پست ها :
آخرین بازدید :
آخرین بروز رسانی :