DropDownList की SelectIndexChanged घटना फायरिंग नहीं है


196

मेरे वेब पेज में एक DropDownList ऑब्जेक्ट है। जब मैं उस पर क्लिक करता हूं और एक अलग मूल्य का चयन करता हूं, तो कुछ भी नहीं होता है, भले ही मेरे पास एक फ़ंक्शन है जो SelectedIndexChangedइवेंट तक वायर्ड है ।

सबसे पहले, वास्तविक वस्तु का HTML कोड:

<asp:DropDownList ID="logList" runat="server" 
       onselectedindexchanged="itemSelected">
</asp:DropDownList>

और यह वह कार्य है itemSelected:

protected void itemSelected(object sender, EventArgs e)
{
    Response.Write("Getting clicked; " + sender.GetType().ToString());
    FileInfo selectedfile;
    Response.Write("<script>alert('Hello')</script>");
    foreach (FileInfo file in logs)
    {
        if (file.Name == logList.Items[logList.SelectedIndex].Text)
        {
            Response.Write("<script>alert('Hello')</script>");
        }
    }
}

कोई भी प्रतिक्रिया प्रकट नहीं होती है, और जावास्क्रिप्ट का वह भाग कभी नहीं चलता है। मैंने फ़ायरफ़ॉक्स के नवीनतम 3.6 संस्करण के साथ-साथ इंटरनेट एक्सप्लोरर 8 पर भी यह कोशिश की है। यह .NET फ्रेमवर्क संस्करण 4 के साथ ASP.NET को चलाकर विंडोज सर्वर 2003 R2 मशीन से परोसा जा रहा है।

जवाबों:


399

ड्रॉपडाउनलिस्ट AutoPostBackसंपत्ति को सही पर सेट करें ।

उदाहरण के लिए:

<asp:DropDownList ID="logList" runat="server" AutoPostBack="True" 
        onselectedindexchanged="itemSelected">
    </asp:DropDownList>

3
ठीक है, यह तय हो गया है, धन्यवाद। क्या आप व्यख्या कर सकते हैं?
TGP1994

2
@ TGP1994: AutoPostBack संपत्ति का उपयोग स्वत: पोस्ट सेट या वापस करने या वापस करने के लिए किया जाता है
व्यास देव

2
जब मैं ड्रॉपडाउन सूची का चयन कर रहा हूं, तो इसकी सूची का पहला मूल्य
मुहम्मद शफीक

20
@MuhamedShafeeq - यदि आप Page_Load विधि में सूची को पॉप्युलेट कर रहे हैं, तो सुनिश्चित करें कि आप (IsPostback) में कोड को लपेटते हैं। यह सूची को फिर से लोड करने और पहले आइटम पर वापस सेट करने से रोक देगा।
डेव


44

मुझे इसकी थोड़ी पुरानी पोस्ट पता है, लेकिन फिर भी मैं ऊपर दिए गए उत्तरों में कुछ जोड़ना चाहूंगा।

ऐसी कुछ स्थिति हो सकती है जहां, ड्रॉपडाउन सूची में एक से अधिक वस्तुओं के " मूल्य " को डुप्लिकेट / समान किया जाता है। इसलिए, सुनिश्चित करें कि आपके पास इस " onselectedindexchanged " ईवेंट को ट्रिगर करने के लिए सूची आइटम में कोई दोहराया हुआ मान नहीं है


मेरे दो मूल्यों की नकल की गई थी और इस वजह से यह onselectedindexchanged घटना को आग नहीं दे रहा था, भले ही पोस्टबैक हो रहा था। इसके लिए धन्यवाद!
माइक

ड्रॉपडाउन का चयनित मूल्य कई मदों में शून्य था। कृपया क्वेरी में जांचें कि मान शून्य नहीं है।
दिनेश कुमार

12

संपत्ति जोड़ें ViewStateMode="Enabled"और EnableViewState="true" और AutoPostBack="true"ड्रॉप में DropDownList


ViewState गुणों की आवश्यकता नहीं है, और AutoPostBack को इस एक से पहले कई उत्तर वर्षों में सुझाया गया था।
टाइलर

4

यह भी सुनिश्चित करें कि पृष्ठ वैध है। आप इसे ब्राउज़र डेवलपर टूल (F12) में देख सकते हैं

कंसोल टैब में सही लक्ष्य / फ़्रेम का चयन करें और [Page_IsValid] संपत्ति के लिए जांचें

यदि पृष्ठ मान्य नहीं है, तो फॉर्म सबमिट नहीं होगा और इसलिए घटना को फायर नहीं करना चाहिए।


1
हर्बलमार्ट को वोट दें। मेरे मामले में पृष्ठ अवैध था, लेकिन क्योंकि मैं अपने पृष्ठों पर तेलरिक राडजैक्समैनगर का उपयोग करता हूं, जब मैं अपने ब्राउज़र में परीक्षण किया था तो त्रुटि नहीं दिख रही थी। जब मैंने पूरे RadAjaxManager की टिप्पणी को त्रुटि के रूप में प्रस्तुत किया और मैं इसे ठीक कर पाया।
user2721607

उस समस्या वाले लोगों के लिए यह मददगार हो सकता है, लेकिन यह उन लोगों को बताने जैसा है, जिनकी कार शुरू नहीं होती है जब वे चाबी को चालू करते हैं "सुनिश्चित करें कि आपके हेडलाइट्स काम करते हैं या आप रात में ड्राइविंग करते समय नहीं देख पाएंगे"। दूसरे शब्दों में, यह पूछे जाने वाले प्रश्न का उत्तर नहीं देता है।
टायलरएच

3

मेरे लिए इसका जवाब था aspx पृष्ठ विशेषता, मैंने पृष्ठ विशेषताओं में Async = "true" जोड़ा और इससे मेरी समस्या हल हो गई।

<%@ Page Language="C#" MasterPageFile="~/MasterPage/Reports.Master"..... 
    AutoEventWireup="true" Async="true" %>

यह मेरे अपडेट पैनल की संरचना है

<div>
  <asp:UpdatePanel ID="updt" runat="server">
    <ContentTemplate>

      <asp:DropDownList ID="id" runat="server" AutoPostBack="true"        onselectedindexchanged="your server side function" />

   </ContentTemplate>
  </asp:UpdatePanel>
</div>

1

आपने जो कुछ भी लिखा है, उसके बजाय आप इसे सीधे ड्रॉपडलिस्ट नियंत्रण के SelectIndexChanged घटना में लिख सकते हैं, आदि।

protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e)
{
 //code goes here
}

1
केवल अगर AutoEventWireup Aspx पृष्ठ पर सेटिंग सही है, अन्यथा आपको इसे मूल उदाहरण के अनुसार मैन्युअल रूप से करने की आवश्यकता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.