سؤال

لدي موقع إلكتروني حيث يتطلب المستخدم إضافة وإزالة العناوين الرئيسية من الصفحة الرئيسية. يتم تخزين العناوين الرئيسية في قاعدة بيانات مع عمود بعنوان "عرض" (صحيح أو خطأ) الذي يقرر إذا ظهرت العناوين. أريد أن يكون لدى المستخدم القدرة على إضافة أو إزالة العناوين الرئيسية من الصفحة الرئيسية، لذلك قمت بإنشاء صفحة أخرى تقوم بإنشاء جدول من جميع العناوين الرئيسية إلى جانب القائمة المنسدلة التي تحتوي على "تمكين" و "تعطيل". أريد أن تسقط هذه القوائم المنسدلة للعمل عند تغيير المستخدم القيمة في القائمة المنسدلة سيتم تحديث قاعدة البيانات. أنا فقط لا أستطيع العثور على كيفية إعطاء القائمة المنسدلة في حدث تغيير.

أيه أفكار؟ هل أذهب في هذه الطريقة الصحيحة أم أن هناك طريقة أفضل للقيام بذلك؟

هل كانت مفيدة؟

المحلول

أولا، للقيام طلبك الفعلي، ستحدد المنسدلة إلى AutoPostback، وإضافة معالج للحصول على القيمة وتحديث البيانات، أي (على الرغم من أن الحد الأدنى من القائمة المنسدلة الخاصة بك سيكون في مكرر، أو DataGrid)

    Private Sub SetupDropdowns()
        Dim pDropDown As New DropDownList
        pDropDown.Items.Add("Yes")
        pDropDown.Items.Add("No")
        pDropDown.AutoPostBack = True
        AddHandler pDropDown.SelectedIndexChanged, AddressOf pDropDown_SelectedIndexChanged
    End Sub

    Private Sub pDropDown_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim value As String = CType(sender, DropDownList).SelectedValue
'Do something with value
    End Sub

طريقة أسهل، إذا كنت ترغب في الوصول إلى SQL مباشرة هي استخدام DataGrid و DataBind عليه لاستعلام SQL الخاص بك.

نصائح أخرى

أولا؛ شخصيا أود استخدام خانات الاختيار لتوفير واجهة مستخدم قيمة حقيقية / خاطئة. يمكنك التعامل مع هذا بطريقتين: إما أن تستخدم عناصر تحكم ASP.NET (u003Casp:CheckBox ... /> ) أو عناصر تحكم HTML عادي (u003Cinput type="checkbox" .../> ).

في حالة استخدام عناصر التحكم ASP.NET، يمكنك ببساطة انقر نقرا مزدوجا فوق عنصر التحكم (في عرض التصميم) من أجل الحصول على معالج حدث لحدث Checkedchanged ليتم إنشاؤه لك. في حالة استخدام عنصر إدخال HTML، ستحتاج إلى التعامل مع حدث OnClick على جانب العميل باستخدام JavaScript، ولديه JavaScript قم بإجراء مكالمة AJAX أو مشابهة بحيث يمكن للخادم تحديث قاعدة البيانات. أود أن أقول أن نهج ASP.NET هو أبسط.

على الأرجح أنك أسهل طريقة لهذا هي ببساطة استخدام DataGrid، يمكنك بعد ذلك التعامل مع الحدث بسهولة.

كبديل، نظرا لأنك تقوم ببساطة بعمل خيار "إظهار" أو "إخفاء"، فيمكنك فقط استخدام الأزرار، والتي قد توفر واجهة مستخدم أفضل. (أجد هذا صحيحا بسبب التمرير العرضي لعناصر القائمة المنسدلة باستخدام ماوس عجلة التمرير في بعض المتصفحات)

في التعليمات البرمجية حيث تقوم بإنشاء القائمة المنسدلة الخاصة بك، أضف هذا:

''// You already have this code...

Dim oDropDown as New DropDown

''// Whatever other declarations you need...

AddHandler oDropDown.SelectedIndexChanged, _ 
AddressOf oDropDown_SelectedIndexChanged

عادة، يمكنك إضافة هبوطا إلى مشروعك من Toolbox، ويمكنك استخدام القائمة المنسدلة ضمن CodeView لتحديد الحدث المحدد. علينا أن نفعل هذا يدويا في هذه الحالة، لذلك قم بإنشاء الروتين الفرعي الخاص بك:

Public Sub oDropDown_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    ''// Do whatever you need to do here

    ''// I sometimes do this to make code manipulation easier:
    Dim _sender as DropDown = CType(sender, DropDown)

End Sub

امل ان يساعد!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top