【问题标题】:Code not reaching SelectedIndexChanged event代码未达到 SelectedIndexChanged 事件
【发布时间】:2012-10-21 16:24:46
【问题描述】:

我在MyPage.aspx 中有一个用户控件。 用户控件包含几个下拉列表;每个都有Autopostback = true,但是当我运行代码并更改下拉项时,会触发其他事件,但不会触发SelectedIndexChanged

<asp:DropDownList ID="ddPages1" runat="server" EnableViewState="true" AutoPostBack="true"
    onselectedindexchanged="ddPages1_SelectedIndexChanged">
</asp:DropDownList>

ascx 后面的代码:

protected void ddPages1_SelectedIndexChanged(object sender, EventArgs e)
{
    ...
}

ascx 也有 ReportViewer 并且我正在将报告中的页数填充到下拉列表中。

protected override void Render(HtmlTextWriter writer)
{
    TotalPages = ReportViewer1.LocalReport.GetTotalPages();
    txtPageCount1.Text = Convert.ToString(TotalPages);
    if (TotalPages > 0)
    {
        for (int i = 1; i <= TotalPages; i++)
        {
            ListItem listItem = new ListItem();
            listItem.Value = i.ToString();
            listItem.Text = i.ToString(); 
            ddPages1.Items.Add(listItem);
        }  
    }
    base.Render(writer);
 }

【问题讨论】:

  • SelectedIndexChanged 监听器是否包含在用户控件的代码中?另外,您是否对列表进行数据绑定?
  • 您是否使用数据绑定来填充下拉列表?如果是这样,我们可以看到代码吗?
  • @NickW 请查看更新。

标签: c# asp.net


【解决方案1】:

试试这个:

你有ddPages1.Items.Add(listItem);的地方,替换为

if(!this.IsPostBack)
{
    ddPages1.Items.Add(listItem);
}

您可能会遇到的问题是,每次都填充列表,您将失去选择。

【讨论】:

    【解决方案2】:

    请提供更多信息?如何绑定到 SelectedIndexChanged 事件?您是否以编程方式绑定它?或使用声明形式?

    您是否启用了 ViewState?

    【讨论】:

    • 同意,更多信息会有所帮助。你能发布一些你的代码吗?
    • 对不起。我已经更新了这个问题。请看一看。
    【解决方案3】:

    您在下拉列表中设置了Autopostback = true,但可能您将Autopostback = true 放在您的用户控件

    【讨论】:

    • 如果你能解释你是如何在下拉列表中填充数据的会更好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多