嵌套的用户控件Linkbutton Onclick事件在回发后未触发- asp.net/C#

本文关键字:asp net 控件 用户 Linkbutton Onclick 事件 嵌套 | 更新日期: 2023-09-27 18:08:32

我对一系列表单使用嵌套控件,并且在onclick事件中遇到问题。

我只是使用文本框和手动代码插入,而不是Gridview/Details视图结构。

这个场景是,我有一个汽车保险表单,用户可以在其中添加额外的命名司机。在顶部是一个部分,您可以添加自己的详细信息(这是一个单独的用户控件),下面有一个部分,您可以添加多达4个命名的驱动程序(这也是一个单独的用户控件)。我想做的是使用我的'Add Driver' linkbutton 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控件上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(或删除它并重新创建它)之后,我是否可以做些什么来重新激活此链接按钮,以便我可以添加多个驱动程序?我试图在提交后绑定按钮,但正如预期的那样,没有效果,但这就是我想要的那种东西。我无法重定向页面,因为正如前面提到的,它使用嵌套控件,我通过使用下拉列表的SelectedIndexChanged事件到达这个表单。

任何想法赞赏-谢谢。如果需要更多信息,请告诉我。

嵌套的用户控件Linkbutton Onclick事件在回发后未触发- asp.net/C#

听起来您可能有一些阻止按钮进行回发的验证。尝试设置CausesValidation="false",看看是否有不同。

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

RequiredFieldValidator1.Enabled = Panel1.Visible;