经过大量研究,在我的情况下,我无法在任何地方找到同样的问题。我已在页面,控件和各个下拉级别启用了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
}