۱۳۸۹ شهریور ۱, دوشنبه

رفع مشکل نمایش با اینترنت اکسپلورر در طراحی صفحات وب

شاید گاهی اوقات دیده باشید که سایتی را در فایرفاکس به درستی و زیبایی می بینید ولی در اینترنت اکسپلورر تمام اجزای صفحه به هم ریخته و خراب هستند .
مشکلات با اینترنت اکسپلورر همواره یکی از بزرگترین مشکلاتی بوده و هست که برنامه نویس ها با آن روبه رو بوده اند و با ارائه نسخه های جدید این مرور گر علاوه بر اینکه این مشکلات کم نشد بلکه مشکل ۲ برابر هم شد !

حال در این مطلب میخواهیم به راههای رفع این مشکلات و برنامه نویسی بهینه اشاره ای داشته باشیم ، (اینترنت اکسپلورر مورد بحث در این مطلب نسخه های ۶ و ۷ و فایر فاکس موزد بحث نسخه ۲ و ۳ می باشد).

مایکروسافت در نسخه ۷ اینترنت اکسپلورر بسیاری از مشکلات را بهبود داد البته هنوز مشکلات زیادی وجود داره ولی با اینکه بسیاری از مشکلات روی اینترنت اکسپلورر ۷ برطرف شده ولی باز هم باید تمام صفحه ها روی اینترنت اکسپلورر ۶ هم باز بینی شوند چرا که مرور گر پیش فرض ویندوز اکس پی هست و درصد استفاده کنندگان از این نسخه هم کم نیست .


مشکلات اینترنت اکسپلورر با تگ”<Div>” :
در نسخه های قبلی HTML بیشتر اجزای موجود در صفحه با “<table>” ها ساخته می شد ، ولی به علت انعطاف پذیری کم و تولید حجم کد زیاد استاندارد صفحات وب بر پایه استفاده از “<div>” بنا شد ، و به همین علت اینترنت اکسپلورر اولین مشکلی که داشت مشکل با تگ های div بود و به همین علت بسیاری از برنامه نویسان همواره از table ها استفاده می کردند که کاری بسیار غیر استاندارد و غلط هست .

راه های هک کردن اینترنت اکسپلورر :
منظور از هک کردن نوشتن دستوری هست که فقط اینترنت اکسپلورر قادر به خواندن آن باشد .
خیلی وقت ها مشاهده میشه که وقتی از دستور padding و یا margine برای جا به جا کردن اجزای صفحه استفاده میشه در فایر فاکس درست حرکت انجام میشه و در اینترنت اکسپلورر نصف و یا کمتر از اندازه داده شده حرکت انجام میشه ، در اینجا باید برای اینترنت اکسپلورر مقدار بیشتری مشخص کنید تا نصف اون برابر با مقدار اصلی شود.

و این مقدار جدید را که میخواهیم فقط اینترنت اکسپلورر ببیند با قرار دادن علامت های ” * “و یا ” # ” در ابتدای آنها مشخص میکنیم.

مثال :
کد:
padding-left:۲۰px
padding-left:۴۰px*

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

ولی یکی از مشکلاتی که در اینجور مواقع پیش میاد این هست که چون دستور ستاره دار رو همه نسخه های اینترنت اکسپلورر می خوانند احتمال این به وجود میاید که اینترنت اکسپلورر ۷ دستور اول رو درست نمایش داده باشه و با این کار وقتی دستور ستاره دار رو میخونه به هم ریخته باشه ، و در واقع ما مشکل رو درنسخه ۶ حل کردیم ولی نسخه ۷ به هم ریخته .

حال زمانی که با این مشکل رو به رو شدید باید از تگ important استفاده کنید ، علت استفاده از این تگ این هست که به دستور ما ارجحیت میدهد و این تگ را مرور گر های جدید به خوبی متوجه میشوند و مرور گر های قدیمی (IE ۶) اون رو نمیبینند ، بدین ترتیب عمل میکنیم که دستوری را که میخواهیم اینترنت اکسپلورر ۶ ببیند معمولی و دستور دیگر رو که میخواهیم اینترنت اکسپلورر ۷ و یا فایر فاکس ببینند همراه با important می نویسیم .

مثال :
کد:
padding-left:۴۰px
padding-left:۲۰px !important

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


استفاده از فایل CSS جداگانه برای اینترنت اکسپلورر :

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

مثال :
کد:
  <!–[if IE ۶]>      <link rel=”sytlesheet” type=”text/css” href=”bugFixForIE۶x.css”>      <![endif]–>
   <!–[if IE ۷]>      <link rel=”sytlesheet” type=”text/css” href=”bugFixForIE۷x.css”>      <![endif]–>



منبع:microrayaneh.com

آموزش اتصال به دیتابیس اکسس توسط LINQ


با توجه به اینکه LINQ در فریم ورک های زیر 4 امکان اتصال به دیتابیس اکسس را ندارد ، شرکت های مختلفی Linq Provider هایی را برای اتصال به سایر پایگاه های داده ایجاد کرده اند.

ALinq یک linq provider است که امکان اتصال به دیتابیس های مختلفی از جمله اکسس را فراهم میکند. برای استفاده از این محصول آنرا از سایت alinq به صورات رایگان دانلود کنید
.



پس از دانلود و نصب این بسته ، وارد آدرس نصب برنامه شوید. (در ویندوز 7 بصورت C:\Program Files (x86)\ALinq خواهد بود) در پوشه ی bin دو فایل ALinq.dll و ALinq.Access.dll را به پوشه ی bin پروژه خود اضافه کنید.

حالا یک دیتابیس اکسس ایجاد کنید و در آن یک جدول بنام student ایجاد کنید. فیلدهای جدول را بصورت زیر تنظیم کرده ایم :
ID از نوع AutoNumber
StudentName از نوع Text
UniName از نوع Text
Level از نوع Number

دیتابیس را در پوشه app_data ذخیره کنید . حالا در فایل default.aspx خود یک دکمه اضافه کنید و وارد بخش کد صفحه شوید. توجه کنید که کدها به زبان C-sharp است و در صورت لزوم میتوانید آنها را به کد vb.net تبدیل کنید. میخواهیم یک کلاس بنام student ایجاد کنیم و در آن جدول student را به این کلاس map کنیم.
[ALinq.Mapping.Table(Name = "Student")]
    public class Student
    {
        [ALinq.Mapping.Column]
        public string ID;

        [ALinq.Mapping.Column]
        public string Studentname;

        [ALinq.Mapping.Column]
        public string uniname;

        [ALinq.Mapping.Column]
        public string level;
    }
حالا در کد click شدن دکمه هم کد زیر را اضافه کنید: 
var context = new ALinq.DataContext(Server.MapPath("App_data/db.mdb"), typeof(ALinq.Access.AccessDbProvider));
       
        var resss = from cust in context.GetTable()
                    where cust.uniname == "Azad Qazvin"
                    select new { cust.Studentname, cust.level };
       
        foreach (var student in resss)
            Response.Write(student.Studentname + " - " + student.level+ " <br>");
کد بالا یک DataContext از روی بانک اکسس ایجاد میکند و با استفاده از یک کوئری لینک ، مقادیر نام و level هر دانشجویی را که دانشگاهش Azad Qazvin  باشد بر میگرداند. برای تست برنامه چند دانشجو در جدول وارد کنید و نام دانشگاه برخی از آنها را Azad Qazvin بگذارید.

دانلود کد این پروژه


برای مطالعه بیشتر در مورد linq میتوانید به مطالب ثبت شده در سایت idevCenter مراجعه کنید.
منبع:macromediax.com