2011-09-13 59 views
3

我使用嵌套控件進行了一系列的形式,並具有與onclick事件的問題。嵌套的用戶控件LinkBut​​ton的onClick事件不觸發 - asp.net/C#

我只是用文本框和手動代碼隱藏插入,而不是GridView的/詳細信息視圖結構。

的情況是,我有一個汽車保險的形式,用戶可以添加額外的命名的驅動程序。頂部是添加自己的詳細信息的部分(這是一個單獨的用戶控件),並且下面有一個部分,您可以在其中添加最多4個命名驅動程序(也是單獨的用戶控件)。我想要做的就是使用我的'添加驅動程序'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" /> 

這是添加驅動程序的onclick事件的縮減版本,提交有關AddDriver控制

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

該按鈕是否仍然會導致回發,還是它沒有做任何事情?你有沒有嘗試過設置'CausesValidation =「false」'? –

+0

嗨,詹姆斯 - 好主意。這不會導致回發,但我已經設置了'CausesValidation =「false」',它確實有效。唯一的麻煩是,我需要它來引起驗證,所以它還沒有完全解決。這很好,雖然... –

回答

3

這聽起來像你可能有一些驗證該問題,導致從做回發的按鈕。嘗試設置CausesValidation="false",看看是否有所作爲。

如果驗證引起問題,我要麼驗證分成組並分配按鈕到特定的組,或切換基於一些條件的驗證的啓用狀態,例如:

RequiredFieldValidator1.Enabled = Panel1.Visible; 
+0

嗨,詹姆斯 - 你是對的。如果字段被隱藏,我的驗證器被JavaScript禁用,但它們仍然無法通過驗證服務器端。我在onclick事件中添加了一些代碼,以確定哪個驗證器失敗,並在符合正確條件時手動禁用它們。謝謝你的幫助 –

相關問題