2011-09-13 5 views
3

私は一連のフォームにネストされたコントロールを使用しており、onclickイベントに問題があります。ネストされたusercontrol Linkbuttonポストバック後のOnclickイベントは起動しません - asp.net/C#

Gridview/Detailsビュー構造ではなく、テキストボックスと手動コードビハインド挿入を使用しています。

私は、ユーザーが追加の名前付きドライバを追加できる自動車保険のフォームを持っているということです。一番上には、独自の詳細(個別のユーザーコントロール)を追加するセクションがあり、4つまでの名前付きドライバー(個別のユーザーコントロール)を追加できるセクションがあります。私がしたいのは、私の 'Add Driver'リンクボタンonclickイベントを使用してデータベースに詳細を追加した後、ユーザーが別のドライバを追加できるようにフォームフィールドをクリアすることでした。これは、[ドライバの追加]ボタンをもう一度クリックしても動作しないことを確認するまで、正常に動作します。これは、追加ドライバのための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; 
     } 
    } 

上のボタンを提出され

 <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の後にこのリンクボタンを再度アクティブにする(または削除して再作成する)ために何かできることがあるので、複数のドライバを追加できますか?私は提出後にボタンをデータバインドしようとしましたが、期待どおり効果はありませんでしたが、それは私が探しているものです。私はページをリダイレクトすることはできません。なぜなら、前の記事で説明したように、ネストされたコントロールを使用していて、DropDownListのSelectedIndexChangedイベントを使用してこのフォームに到着するからです。

ありがとうございます - ありがとうございます。もっと情報が必要な場合は教えてください。

+0

ボタンはまだポストバックを引き起こすのですか、それとも何もしませんか? 'CausesValidation =" false "'を設定しようとしましたか? –

+0

こんにちはジェームス - 良いアイデア。それはポストバックを引き起こしていませんでしたが、私は 'CausesValidation =" false "を設定しました。問題があるだけですが、検証が必要なので、まだ解決されていません。それは素晴らしいですが... –

答えて

3

ボタンがポストバックをしないようにする検証があるかもしれません。 CausesValidation="false"を設定して、違いがあるかどうか確認してください。検証が問題を引き起こしている場合

、Iは、例えば、グループに検証を分離し、特定のグループにボタンを割り当てる、またはいくつかの条件に基づいてバリデータの有効状態を切り替えることになる次のいずれか

RequiredFieldValidator1.Enabled = Panel1.Visible; 
+0

こんにちはJames - あなたは絶対に正しいです。私はフィールドが隠されていた場合、javascriptによって無効にされたバリデータを持っていましたが、まだ検証サーバー側に失敗していました。 onclickイベントにいくつかのコードを追加して、どのバリデータが失敗しているかを調べ、適切な基準が満たされた場合は手動で無効にしました。ご協力いただきありがとうございます –

関連する問題