我正在使用嵌套控件来处理一系列表单并且遇到onclick事件的问题。
我只是使用文本框和手动代码隐藏插入而不是Gridview / Details视图结构。
场景是我有一个汽车保险表单,用户可以在其中添加其他命名驱动程序。在顶部是一个部分,您可以在其中添加自己的详细信息(这是一个单独的用户控件),下面有一个部分,您可以在其中添加最多4个命名驱动程序(也是一个单独的用户控件)。我想要做的是使用我的“添加驱动程序”链接按钮onclick事件将详细信息添加到数据库中,然后清除表单字段,以便用户可以添加另一个驱动程序。这一切都正常,直到您再次单击“添加驱动程序”按钮并发现它不起作用。
这是容纳添加驱动程序用户控件的父控件:
<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事件来到达此表单。
任何想法都赞赏 - 谢谢。如果需要更多信息,请与我们联系。
答案 0 :(得分:3)
听起来你可能有一些验证阻止按钮进行回发。尝试设置CausesValidation="false"
,看看是否有所作为。
如果验证导致问题,我会将验证分成组并将按钮分配给特定组,或者根据某些条件切换验证器的启用状态,例如:
RequiredFieldValidator1.Enabled = Panel1.Visible;