【发布时间】:2011-09-13 15:42:05
【问题描述】:
我正在对一系列表单使用嵌套控件,并且 onclick 事件有问题。
我只是使用文本框和手动代码隐藏插入而不是 Gridview/Details 视图结构。
场景是我有一个汽车保险表格,用户可以在其中添加其他指定的司机。顶部是一个部分,您可以在其中添加自己的详细信息(这是一个单独的用户控件),下面是一个部分,您可以在其中添加最多 4 个命名驱动程序(这也是一个单独的用户控件)。我想做的是使用我的“添加驱动程序”链接按钮 onclick 事件将详细信息添加到数据库中,然后清除表单字段,以便用户可以添加另一个驱动程序。这一切正常,直到您再次单击“添加驱动程序”按钮并发现它不起作用。
这是包含 Add Driver 用户控件的父控件:
<h2>Add Permanent Driver</h2>
<asp:ValidationSummary ID="uxValidationSummary" runat="server" ShowSummary="true" ValidationGroup="ChangeDetails" />
<div class="clear"></div>
<h3>
Please enter your details below as they are on your insurance documents</h3>
<uc1:UserDetails ID="uxUserDetails" runat="server" />
<uc2:AddDriver ID="uxAddDriver" EntryType="Permanent" runat="server" />
这是 AddDriver 控件上添加驱动程序提交按钮的 onclick 事件的缩减版本
protected void uxSubmit_Click(object sender, EventArgs e)
{
Page.Validate("AddDriver");
if (Page.IsValid)
{
DriverDAL.DriverTableAdapters.DriverTableAdapter taDriver = new DriverDAL.DriverTableAdapters.DriverTableAdapter();
taDriver.DriverInsert(StartDate, EndDate, Title,
FirstName, Surname, DateOfBirth, Gender);
uxDriverList.DataBind();
uxDate.Text = string.Empty;
uxEndDate.Text = string.Empty;
uxTitle.SelectedIndex = 0;
uxFirstName.Text = string.Empty;
uxSurname.Text = string.Empty;
uxDateOfBirth.Text = string.Empty;
uxGender.SelectedIndex = 0;
}
}
在第一次 OnClick 之后我可以做些什么来重新激活这个链接按钮(或删除它并重新创建它),以便我可以添加多个驱动程序?我尝试在提交后对按钮进行数据绑定,但正如预期的那样,这没有任何效果,但这就是我正在寻找的那种东西。我无法重定向页面,因为如前文所述,它使用嵌套控件,我通过使用 DropDownList 的 SelectedIndexChanged 事件到达此表单。
任何想法表示赞赏 - 谢谢。如果需要更多信息,请告诉我。
【问题讨论】:
-
该按钮是否仍然会导致回发,或者它没有做任何事情?你试过设置
CausesValidation="false"吗? -
嗨詹姆斯 - 好主意。它没有导致回发,但我设置了
CausesValidation = "false"并且它确实有效。唯一的麻烦是,我需要它来进行验证,所以还没有完全解决。不过那太好了……