我已经为选择日期构建了一个自定义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后重新加载页面都是frasturating。 2.我尝试在控件上放一个按钮并调用它的onbuttonclick事件,但它没有用。
现在,如果我的控件发现日期无效,我需要向页面发送回发。
P.S。当我在SelectedIndexChganged方法的beginneg处设置断点并更改任何下拉列表的索引时,调试器不会在该断点处停止。我已将所有下拉列表SelectedIndexChanged事件分配给此方法。
答案 0 :(得分:1)
使用__doPostback('ButtonRenderedId','');
当你的AutoPostback =“true”javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0)
时
以html呈现。
意味着通过javascript对每个indexchanged进行间接页面回发。
如果你的autopostback是假的你可以做manbackly回发。
了解更多点击下面How to use __doPostBack()