نمایش نتایج 1 تا 13 از 13

نام تاپیک: استفاده از Page.Header درون یک تابع در Class1.vb

  1. #1
    کاربر دائمی آواتار shahab_ksh
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تو اطاقم
    پست
    1,388

    Tick استفاده از Page.Header درون یک تابع در Class1.vb

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



    Sub He()
    Page.Header.InnerText =
    "s"
    EndSub

  2. #2
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    36
    پست
    1,227
    منظورتو درست متوجه نشدم .
    ولی شما میتونید تابعی که نوشتید را Public کنید ، بعد در هر صفحه که می خواهیی ازش استفاده کنی یه نمونه ازش بسازی و اونو صدا بزنی
    و یا اگر میخواهی که در هر صفحه نمونه سازی نکنی میتونی اونو به صورت Share تعریف کنی و در هر صفحه نام کلاس و نام تابع را صدا بزنی

  3. #3
    کاربر دائمی آواتار shahab_ksh
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تو اطاقم
    پست
    1,388
    نه مشکل این نیست مشکل استفاده از Page.Header.InnerText در class1.vb هستش
    چون مثل اینکه Page.Header برای class1 ناشناخته هستش

    حتی بصورت زیر در آوردم اما باز هم

    Public Shared Sub He()
    Dim a As New Page
    a.Header.InnerText = "s"
    End Sub


    اما موقع کامپایل فایل class1.vb پیغام معروف
    Object reference not set to an instance of an object.

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

    Source Error:

    Line 34: Public Shared Sub He()Line 35: Dim a As New PageLine 36: a.Header.InnerText = "s"Line 37: End SubLine 38:
    Source File: F:\PROJECT\Sql Platfrom\App_Code\Class1.vb Line: 36

  4. #4
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    36
    پست
    1,227
    خوب به کلاست بگو از System.web.Ui.Page ارث بری کنه

  5. #5

    Public NotInheritable Class clsTest
    Public Shared Sub doWork()
    Dim obj_Page As Page = TryCast(HttpContext.Current.CurrentHandler, Page)
    If (obj_Page IsNot Nothing) Then
    obj_Page.Header.InnerText = "be hamin sadegi!"
    End If
    End Sub
    End Class

  6. #6
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    36
    پست
    1,227
    آقا بهروز میشه یه توضیحی در مورد کد فوق بدید ،،،،،،

  7. #7
    کاربر دائمی آواتار shahab_ksh
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تو اطاقم
    پست
    1,388
    اقا بهروز در خط

    obj_Page.Header.InnerHtml = "be hamin sadegi!"



    باز هم ایراد Object reference not set to an instance of an object.
    رو گرفت


    Line 17: Dim obj_Page As Page = TryCast(HttpContext.Current.CurrentHandler, Page)Line 18: If (obj_Page IsNot Nothing) ThenLine 19: obj_Page.Header.InnerHtml = "be hamin sadegi!"Line 20: End IfLine 21: End Sub

  8. #8
    نقل قول نوشته شده توسط mahdie_farhani
    آقا بهروز میشه یه توضیحی در مورد کد فوق بدید ،،،،،،
    هر کجاش رو متوجه نشدی بگو توضیح بدم.
    نقل قول نوشته شده توسط shahab_ksh مشاهده تاپیک
    اقا بهروز در خط

    obj_Page.Header.InnerHtml = "be hamin sadegi!"



    باز هم ایراد Object reference not set to an instance of an object.
    رو گرفت


    Line 17: Dim obj_Page As Page = TryCast(HttpContext.Current.CurrentHandler, Page)Line 18: If (obj_Page IsNot Nothing) ThenLine 19: obj_Page.Header.InnerHtml = "be hamin sadegi!"Line 20: End IfLine 21: End Sub
    به احتمال زیاد "runat="server رو از تگ head حذف کردی! من تست کردم؛ مشکلی نداره.
    البته این عجیبه که می خوای به تگ head یک عبارت رو نسبت بدی... معمولا انتساب متن به title مرسوم هست!

    موفق باشید.

  9. #9
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    36
    پست
    1,227
    NotInheritable , tryCast
    traycast فکر کنم برای تغییر نوع باشه اگر اشتباه نکم
    . اصلاً عملکرد این کد چی هست رو می خواهم بدونم و همچنین معادلش تو C#‎

  10. #10
    کاربر دائمی آواتار shahab_ksh
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تو اطاقم
    پست
    1,388
    مرسی

    البته این عجیبه که می خوای به تگ head یک عبارت رو نسبت بدی... معمولا انتساب متن به title مرسوم هست!
    آقا بهروز این کد رو نمونه گذاشتم در نظر بگیرید شما چند تا کنترل با ID همنام در چند صفحه مختلف دارید که که کارهایی مثل این تابع رو انجام میده


    Sub EmpData()
    Label1.Text = ""
    Massage.Text = "ok"
    Textbox1.Text = "123"
    EndSub


    این تابع در اون صفحات وجود داره حال چطور میشه این تابع رو در فایل class1.vb قرار داد
    نمیخام از راه های دیگر مثل یوسر کنترل ها یا ساخت کنترل های دینامیک استفاده کنم

  11. #11
    نقل قول نوشته شده توسط mahdie_farhani
    NotInheritable , tryCast
    traycast فکر کنم برای تغییر نوع باشه اگر اشتباه نکم
    اینجا وارد بحث های مفهومی دات نت میشیم. زیاد بحث رو پیچیده نمی کنم و سعی می کنم به زبان ساده توضیح بدم.
    در Visual Basic 6.0 زمانی که قصد داشتی تعدادی متد و روال های عمومی تعریف کنی که در تمام پروژه استفاده میشن، اونها رو در یک Module تعریف می کردی.
    VB.NET ضمن حمایت از روش قدیمی Module، برای یکپارچگی با زبان های دیگه ی مبتنی بر پلت فرم دات نت و رعایت اصل جابجایی برنامه با رعایت استاندارد دات نت، نوع جدیدی از کلاس ها رو با عنوان کلاس های NotInheritable معرفی کرده که کلاس هایی که در نقش Utility ظاهر میشن، بدون نیاز به new کردن ازشون بشه به اعضای اونها دسترسی داشت.
    چون کلاس های NotInheritable، غیر قابل به ارث برده شدن هستند و اعضای Shared نیز نمی تونن از Instance یک کلاس ایجاد بشن، پس بهترین کار این هست که اعضای یک کلاس NotInheritable رو Shared تعریف کنیم. از این طریق در مصرف حافظه نیز صرفه جویی میشه.
    در #C، کلاس های sealed معادل NotInheritable و اعضای static معادل Shared در VB.NET هستند.

    و اما در مورد TryCast و کاربرد اون:
    قبلا هم در این مورد در چند تاپیک توضیح دادم.
    در دات نت Casting های مختلفی وجود داره که شناخت دقیق، صحیح و استفاده ی بجا از اونها، تاثیر مستقیمی در Performance خواهد داشت.

    انواع Casting های تبدیل نوعی به نوع دیگه در VB.NET شامل:
    1) CType
    DirectCast (2
    TryCast (3

    CType برای تبدیل هر نوع داده ای به همدیگه استفاده میشه و تمام تلاشش رو انجام میده تا نوع ها رو به هم تبدیل کنه. مثلا برای تبدیل Int32 به Double. در CType تفاوت در نوع هدف تبدیلی و اون چیزی که قرار هست بهش تبدیل بشه تا اونجایی که مجاز باشه وجود نداره.

    DirectCast برای زمانی هست که نوع داده برای شما واضح هست. مثلا می دونید که کنترل شما حتما Button هست و لاغیر! هر چند که می تونید در این حالت از CType هم استفاده کنید اما DirectCast بهینه تر و دارای سرعت بالاتر هست.

    TryCast هنگامی استفاده میشه که به انجام موفقیت آمیز عملیات تبدیل اطمینان ندارید! مثلا ممکنه کنترلی که به اون ارجاء پیدا کردید از نوع Button باشه اما قصد دارید تا اون رو به CheckBox تبدیل کنید. در این حالت استفاده از CType یا DirectCast باعث بروز خطای InvalidCastException میشه اما TryCast در صورتی که موفق به تبدیل نوعی به نوع دیگه نشه، مقدار Nothing (در VB.NET) و null (در #C) رو بر می گردونه که می تونید با شرط If این مورد رو چک کنید.

    در #C معادلی برای DirectCast وجود نداره اما برای TryCast میشه از کلمه ی کلیدی as استفاده کرد:

    Button obj_Btn = e.Row.FindControl("myButton") as Button;
    if (obj_Btn != null)
    {
    //har kari doost dari ba Button bokon!
    }

    نقل قول نوشته شده توسط mahdie_farhani
    . اصلاً عملکرد این کد چی هست رو می خواهم بدونم
    تنها قسمت مهم اون کد، عبارت HttpContext.Current.CurrentHandler هست.
    CurrentHandler به Context ای اشاره می کنه که در حال استفاده از کلاس هست. در اینجا ما می دونیم که یک Page قرار هست از این کلاس استفاده کنه. دلیل استفاده ی من از TryCast هم همین هست که در جای دیگه، مثلا یک وب سرویس استفاده از این کلاس معنا نداره و باعث بروز خطا میشه!
    نقل قول نوشته شده توسط shahab_ksh
    آقا بهروز این کد رو نمونه گذاشتم در نظر بگیرید شما چند تا کنترل با ID همنام در چند صفحه مختلف دارید که که کارهایی مثل این تابع رو انجام میده

    Sub EmpData()
    Label1.Text = ""
    Massage.Text = "ok"
    Textbox1.Text = "123"
    EndSub

    این تابع در اون صفحات وجود داره حال چطور میشه این تابع رو در فایل class1.vb قرار داد
    نمیخام از راه های دیگر مثل یوسر کنترل ها یا ساخت کنترل های دینامیک استفاده کنم
    پروسیجر فوق رو می تونی به شکل یک تابع با 3 ورودی از نوع کنترل ها تعریف کنی و در هر صفحه ای که دوست داشتی فراخوانیش کنی:

    Public Sub doWork(ByVal obj_Label As Label, ByVal obj_Button As Button, ByVal obj_TextBox As TextBox)
    obj_Label.Text = "Test Label"
    obj_Button.Text = "Test Button"
    obj_TextBox.Text = "Test TextBox"
    End Sub

    موفق باشید.

  12. #12
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    36
    پست
    1,227
    آقا بهروز خیلی ممنون خیلی کامل و جامع بود ، ولی آقا بهروز من تو یکی از کلاسهام احتیاج داشتم بدون اینکه New بشه از اون استفاده کن ، دقیقا می خواستم داخل گرید و یک TemplateItem یک تابع برای جدا کردن ارقام با کاما ازش استفاده کنم و فقط اونو Public و Static تعریف کردم مشکلم حل شد ، پس فرق این با NotInheritable چیه ، اینجا مفهوم ارث بری جلو میاد . اینو من درست متوجه نشدم .
    و آیا این مشکل دوستمون با ارث بری کردن از خوده صفحه حل نمیشود ؟؟؟

  13. #13
    NotInheritable یعنی کسی نتونه از کلاس به ارث ببره و متدهای کلاس رو Override کنه.
    حالا زیاد مهم نیست... میشد که اون کلاس رو با حالت new کردن هم پیاده سازی کرد.
    این به میزان تسلط شما بر مفاهیم دات نت و شی گرایی و آینده نگری! و چند فاکتور دیگه بستگی داره.
    در این حالت و با شرایط موجود، بهتر این هست که اون کلاس رو به شکل یک Utility پیاده سازی کنی که شروط پیاده سازی یک کلاس به شکل یک Utility رو عرض کردم.
    ا این مشکل دوستمون با ارث بری کردن از خوده صفحه حل نمیشود ؟؟؟
    میشه اما کار رو پیچیده تر می کنی!
    باید روال onLoad رو Override کنه و صفحش رو مجبور کنه که از کلاس مذبور ارث ببره...

    موفق باشید.

تاپیک های مشابه

  1. بهم ریختن page header
    نوشته شده توسط fanavar در بخش Access
    پاسخ: 1
    آخرین پست: پنج شنبه 29 آذر 1386, 11:33 صبح
  2. page header or footer longer than page
    نوشته شده توسط maryam_jamshid در بخش گزارش سازی با Crystal Report
    پاسخ: 1
    آخرین پست: سه شنبه 22 آبان 1386, 00:22 صبح
  3. نمایش Page Header به غیر از صفحه اول
    نوشته شده توسط ehsan_ansaripoor در بخش گزارش سازی با Crystal Report
    پاسخ: 3
    آخرین پست: شنبه 24 شهریور 1386, 07:59 صبح
  4. Page header در SubReport کجاست ؟
    نوشته شده توسط vzsoft در بخش گزارش سازی با Crystal Report
    پاسخ: 2
    آخرین پست: شنبه 28 آبان 1384, 07:14 صبح
  5. Next Page و Previews Page در crystal report
    نوشته شده توسط سمیه در بخش گزارش سازی با Crystal Report
    پاسخ: 0
    آخرین پست: شنبه 07 خرداد 1384, 13:22 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •