无法在SelectedIndexChanged

时间:2016-05-26 21:35:25

标签: asp.net drop-down-menu postback selectedvalue selectedindexchanged

经过大量研究,在我的情况下,我无法在任何地方找到同样的问题。我已在页面,控件和各个下拉级别启用了viewstate。如果根据代码,PostLack为true,则Page_Load仅加载下拉列表。

问题在于回发(由DropDownList或任何控件触发),"空参数"在我的调试标签中显示,它告诉我它没有从selectedIndexChanged方法的下拉列表中获取SelectedValue。此外,我的下拉菜单在PageLoad" PopulateFilterDropdownns"之前重置为初始值。方法。

有什么想法吗?我一直在这里搜索,谷歌,我可以去的任何地方。每个人的问题通常都是缺乏" IsPostback"或者EnableViewState =" true",但我的结尾没有骰子。我将提到这是一个ascx UserControl,在一个包含MasterPage的页面内。但是我相信每个代码都与这个问题无关,而且在这里发布的内容非常大。

帮助!?

下拉:

  <asp:DropDownList ID="ddlTopics" runat="server" EnableViewState="true" AutoPostBack="true" OnSelectedIndexChanged="ddlTopics_SelectedIndexChanged">
                <asp:ListItem Text="Topic" Value=""></asp:ListItem>
            </asp:DropDownList>

的Page_Load:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            PopulateFilterDropdowns();
        }

    }

以下方法:

public void PopulateFilterDropdowns()
    {
        PopulateTopicDropdown();
        PopulateAssetTypeDropdown();
        PopulateLevelDropdown();
    }
public void PopulateTopicDropdown()
    {
        using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["XXX"].ConnectionString))
        {
            conn.Open();
            using (SqlCommand cmd = new SqlCommand("StoredProc", conn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                using (SqlDataReader rdr = cmd.ExecuteReader())
                {
                    while (rdr.Read())
                    {
                        //ListItem itm = new ListItem();
                        //itm.Value = rdr[0].ToString();
                        //itm.Text = rdr[0].ToString();
                        ddlTopics.Items.Add(new ListItem(rdr[0].ToString(), rdr[0].ToString()));
                    }
                }
            }
        }
    }

问题区:

 protected void ddlTopics_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList ddlTopics1 = (DropDownList)sender;
        string topic = ddlTopics1.SelectedValue;
        if (String.IsNullOrEmpty(topic))
            lblDebug.Text = "Empty Parameter";
        else
            lblDebug.Text = topic;
        //PopulateRecordsByTopic(topic);
    }
    public void PopulateRecordsByTopic(string topic)
    {
        //Query and Binding of repeater on page
    }

0 个答案:

没有答案
相关问题