سؤال

أريد فقط قائمة ASP.NET DropDownList بدون عنصر محدد.ضبط SelectedIndex على -1 ليس له أي فائدة حتى الآن.أنا أستخدم Framework 3.5 مع AJAX، أي.هذه القائمة المنسدلة موجودة داخل UpdatePanel.وهنا ما أفعله:

    protected void Page_Load (object sender, EventArgs e)
    {
        this.myDropDownList.SelectedIndex = -1;
        this.myDropDownList.ClearSelection();

        this.myDropDownList.Items.Add("Item1");
        this.myDropDownList.Items.Add("Item2");
    }

في اللحظة التي أقوم فيها بإضافة عنصر في DropDown، يتغير SelectedIndex الخاص به إلى 0 ولا يمكن ضبطه على -1 (حاولت الاتصال بـ SelectedIndex بعد إضافة العناصر أيضًا)...ما أقوم به خطأ؟سيكون موضع تقدير مساعدة النمل!

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

المحلول

ضع في اعتبارك أن myDropDownList.Items.Add سيضيف عنصر قائمة جديد في الأسفل إذا قمت باستدعائه بعد إجراء استدعاء DataSource/DataBind لذا استخدم طريقة myDropDownList.Items.Insert بدلاً من ذلك على سبيل المثال...

myDropDownList.DataSource = DataAccess.GetDropDownItems(); // Psuedo Code
myDropDownList.DataTextField = "Value";
myDropDownList.DataValueField = "Id";
myDropDownList.DataBind();

myDropDownList.Items.Insert(0, new ListItem("Please select", ""));

سيتم إضافة عنصر القائمة المنسدلة "الرجاء التحديد" إلى الأعلى.

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

نصائح أخرى

من الممكن تعيين الفهرس المحدد ممتلكات قائمة منسدلة إلى -1 (ط.ه.تحديد واضح) باستخدام البرنامج النصي من جانب العميل:

<form id="form1" runat="server">
    <asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem Value="A"></asp:ListItem>
        <asp:ListItem Value="B"></asp:ListItem>
        <asp:ListItem Value="C"></asp:ListItem>
    </asp:DropDownList>
    <button id="СlearButton">Clear</button>
</form>

<script src="jquery-1.2.6.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function()
    {
        $("#СlearButton").click(function()
        {
            $("#DropDownList1").attr("selectedIndex", -1); // pay attention to property casing
        })

        $("#ClearButton").click();
    })
</script>

وأنا أقرأ ما يلي:http://msdn.microsoft.com/en-us/library/a5kfekd2.aspx

انها تقول:للحصول على قيمة الفهرس للعنصر المحدد، اقرأ قيمة خاصية SelectedIndex.المؤشر قائم على الصفر.إذا لم يتم تحديد أي شيء، فإن قيمة الخاصية هي -1.

وفي الوقت نفسه، في http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.selectedindex(VS.80).aspx نحن نرى:

استخدم خاصية SelectedIndex لتعيين أو تحديد فهرس العنصر المحدد من عنصر التحكم DropDownList برمجياً.يتم تحديد عنصر دائمًا في عنصر التحكم DropDownList.لا يمكنك مسح التحديد من كل عنصر في القائمة في نفس الوقت.

ربما -1 صالح فقط للحصول على الفهرس وليس لإعداده؟إذا كان الأمر كذلك، سأستخدم "التصحيح" الخاص بك.

أنا متأكد تمامًا من أن القائمة المنسدلة يجب أن تحتوي على بعض العناصر المحددة؛عادةً ما أقوم بإضافة عنصر قائمة فارغ

this.myDropDownList.Items.Add("");

كأول عنصر في قائمتي، والمضي قدمًا وفقًا لذلك.

يمكن أن يكون الفهرس المحدد -1 فقط عند تهيئة عنصر التحكم لأول مرة وعدم وجود عناصر داخل المجموعة.

ليس من الممكن عدم تحديد أي عنصر في القائمة المنسدلة على الويب كما تفعل في WinForm.

أجد أنه من الأفضل أن يكون لديك:this.myDropDownList.Items.Add(new ListItem("يرجى التحديد..."، ""));

بهذه الطريقة أبلغ المستخدم أنه بحاجة إلى تحديد عنصر، ويمكنك التحقق من SelectedIndex == 0 للتحقق من صحته

  1. قم بإنشاء القائمة المنسدلة الخاصة بك وحدد عنصر القائمة الأولي
  2. تعيين AppendDataBoundItems ل true بحيث يتم إلحاق العناصر الجديدة.
<asp:DropDownList ID="YourID" DataSourceID="DSID" AppendDataBoundItems="true"> 
<asp:ListItem Text="All" Value="%"></asp:ListItem> 
</asp:DropDownList>

يرجى تجربة بناء الجملة أدناه:

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("Select"))

أو

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("SelectText"))

أو

DropDownList1.Items.FindByText("Select").selected =true

لمزيد من المعلومات :http://vimalpatelsai.blogspot.in/2012/07/dropdownlistselectedindex-1-problem.html

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