嵌套的usercontrol Linkbutton Onclick事件在回发后没有触发 - asp.net/C#

时间:2011-09-13 15:42:05

标签: c# asp.net webforms

我正在使用嵌套控件来处理一系列表单并且遇到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事件来到达此表单。

任何想法都赞赏 - 谢谢。如果需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:3)

听起来你可能有一些验证阻止按钮进行回发。尝试设置CausesValidation="false",看看是否有所作为。

如果验证导致问题,我会将验证分成组并将按钮分配给特定组,或者根据某些条件切换验证器的启用状态,例如:

RequiredFieldValidator1.Enabled = Panel1.Visible;
相关问题