الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال حول ال user control

مغلق
بدأه programmer55 في 6 ديسمبر 2005 · 4 رد · 478 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اذا كان لدي user control اسمه myDate.ascx

ويوجد به كود html و code behind the page

ومن ضمن الكود يوجد variable اسمه strDate

وهذا ال user control موجود في صفحة اسمها webform1.aspx وتحتوي على label1

كيف استطيع استخدام المتغير strDate في صفحة webform1.aspx

لأني أريد أن أضع قيمة المتغير strDate في label1

لقد جربت التالي:

Dim myControl as myDate
 label1.Text= myDate.strDate.ToString

ولكن يظهر أنها طريقة غير صحيحة وعندما أعمل debug أجد أن قيمة myControl هي Nothing

أرجو مساعدتي وأثابكم الله خيراً ..

#2
Dim myControl as NEW myDate
label1.Text= myDate.strDate.ToString


in myDate.ascx 

Public strDate As Date

You can fly while you can touch the sky

#3

بصراحة أنا جربت أضيف كلمة New مثل ما قلت لي.. وهذه المره myControl لا تكون Nothing

ولكني مازلت لا أستطيع جلب قيمة المتغير strDate

وبالتالي فضلت إرفاق ملفاتي لتوضيح المشكله أكثر..

أولاً: هذا هو ال user control

يحتوي على ثلاثة dropdown lists .. للسنه.. والشهور .. والأيام

07_12_05_05_55_24_11339637241.gif

وهذا هو ال code behind the page للـ user control .. حيث إني وضعت قيم السنين والشهور والأيام بواسطة loop ..

ثم قمت بجمع نتائج الـ drop down lists ووضعتها في متغير strDate

Public strDate As String
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        If Not Page.IsPostBack Then
            bindDates()
            Page.DataBind()
            strDate = drpyears.SelectedItem.Text.ToString & "/" & drpmonths.SelectedItem.Text.ToString & "/" & drpdays.SelectedItem.Text.ToString
        End If
    End Sub

    Sub bindDates()
        Dim arrday As New Hashtable(31)
        Dim i As Integer = 0
        While (i < 31)
            i = i + 1
            arrday.Add(i, i)
        End While

        Dim arrmonth As New Hashtable(12)
        Dim m As Integer = 0
        While (m < 12)
            m = m + 1
            arrmonth.Add(m, m)
        End While

        Dim arryear As New Hashtable(30)
        Dim y As Integer = 1969
        While (y < 2010)
            y = y + 1
            arryear.Add(y, y)
        End While

        drpdays.DataSource = arrday
        drpdays.DataValueField = "key"
        drpdays.DataTextField = "value"

        drpmonths.DataSource = arrmonth
        drpmonths.DataValueField = "key"
        drpmonths.DataTextField = "value"

        drpyears.DataSource = arryear
        drpyears.DataValueField = "key"
        drpyears.DataTextField = "value"


    End Sub

ثانياً: هذه هي صفحة الويب فورم .. التي وضعت بها الـ user control

وهي تحتوي على button .. عندما أضغط عليه يجب أن تظهر قيمة ال strDate في الـ label الموجود في الصفحة

07_12_05_05_58_05_1133963885_.gif

07_12_05_05_58_57_11339639373.gif

وهذا هو الـ code behind the page لهذه الصفحة

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim myControl As New myDate
        Label1.Text = myControl.strDate.ToString
    End Sub

تم تعديل هذه المشاركة بواسطة programmer55 في 7 ديسمبر 2005 في 18:44

#4

أخي أنت تريد إستقبال القيمة بدون عمل Post؟؟

يجب أن تحدد خاصية ال AutoPostBack لكل DropDownList لتصبح True وفي الحدث الخاص بال SelectedIndexChanged قم بإستقبال القيمة .. و هكذا ..

You can fly while you can touch the sky

#5

بالفعل لا أدري كيف لم أفكر في ذلك ..........

وشكرا لمتابعتك

هذا الموضوع مغلق.

مواضيع مشابهة