【问题标题】:Sending a postback programmatically以编程方式发送回发
【发布时间】:2012-04-21 17:10:42
【问题描述】:

我已经为挑选日期构建了一个自定义 Web 控件。它由 3 个下拉列表组成。在他们的 selectedIndexChanged 事件中,我检查这样的日期。

    protected void SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList ddList = sender as DropDownList;
    if (ddlDays.SelectedIndex > 0 && ddlMonths.SelectedIndex > 0 && ddlYears.SelectedIndex > 0)
    {
        int day = ddlDays.SelectedIndex;
        int month = ddlMonths.SelectedIndex;
        int year = int.Parse(ddlMonths.SelectedValue);
        try
        {
            DateTime date = new DateTime(year, month, day);
        }
        catch
        {

            if (OnDateNotValid != null)
                OnDateNotValid("Entered date is not valid");
            //Here I want to invoke PosBack on the page where I use this control
        }
    }
}

实际上,我将警告标签文本更改为错误描述,但由于表单中没有回发,因此标签未显示。这里有一些考虑: 1. 我已将下拉列表的 AutoPostBack 属性设置为 false,因为每次更改 itemindex 后重新加载页面都令人沮丧。 2.我尝试在控件上放置一个按钮并调用它的onbuttonclick事件,但没有成功。

现在,如果我的控件发现日期无效,我需要向页面发送回发。

附:当我在 SelectedIndexChganged 方法的开头放置一个断点并更改任何下拉列表的索引时,调试器不会在该断点处停止。我已将所有下拉列表 SelectedIndexChanged 事件分配给此方法。

【问题讨论】:

  • 为此使用更新面板并将标签放在更新面板中。
  • 更新面板还在使用吗?这些年前我停止使用,因为它们很臃肿。已经看到许多使用这些缓慢的项目的项目,对我来说,这似乎是开发 ajax 风格应用程序的“简单”方式。

标签: asp.net postback


【解决方案1】:

你可以通过javascript回发

使用__doPostback('ButtonRenderedId','');

当你的 AutoPostback="true" javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0) 以 html 呈现。

表示通过javascript更改的每个索引的间接页面回发。

如果你的自动回发是假的,你可以手动回发。

了解更多点击下方How to use __doPostBack()

【讨论】:

    猜你喜欢
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 2011-04-15
    相关资源
    最近更新 更多