2011-06-17 8 views
0

背景:キャリアがWebサービス経由で選択されると、キャリアリストボックスから値を継承するバンドルリストボックスがあります。ASP.NET - Listboxでfalse negativeエラーが発生する必須のフィールドバリデータ

  • ボタンにvalidationGroupがあり、クリックハンドラでPage.IsValidを使用しましたが、「Nothing」と表示されます。
  • IE8で別のキャリアを選択すると、IE9ではなく他のフォームの値がリセットされます。
  • lbCarriersでAutopost = falseの場合、Bundlesリストボックスはデータをロードしません。
  • "lbCarriers"でCausesValidation = "true"を指定すると、バンドルリストボックスでデータがロードされないか、またはw Ajaxを実行する方法を知っていますか?
  • 私はこれをAjaxでどうやってやれるか知っていますか?

問題:バンドルリストボックスで必要なフィールドバリデーターを使用すると、バンドルを選択したときに誤ったerorrが返されます。送信ボタンをクリックすると、「少なくとも1バンドルを選択してください」というエラーメッセージが表示されますが、招待状はまだ送信されてメールが届きます。ここで

は、アプリケーションのスクリーンショットです:Default.aspxページ上の

Validation_Listbox_Error

asp.netコード:

<tr> 
     <td class="style5"> 
      Carrier:<br /> 
      <font size="1">*Hold Ctrl Key Down to Select Multiple Carriers</font></td> 
     <td bgcolor="#ffffff" class="style7"> 
      <asp:ListBox ID="lbCarriers" SelectionMode="Multiple" AutoPostBack="true" 
       runat="server" Height="86px" Width="250px" ValidationGroup="ValidationGroup"> 
      </asp:ListBox> 
     </td> 

     <td bgcolor="#ffffff" class="style2"> 

        <asp:RequiredFieldValidator ID="CarrierValidator" runat="server" Text="*" 
         ErrorMessage="Select At Least 1 Carrier" ControlToValidate="lbCarriers" 
         ValidationGroup = "ValidationGroup" ForeColor="Red" ></asp:RequiredFieldValidator> 

     </td> 
    </tr> 

    <tr> 
    <td class="style1"> 
      Bundles:<br /> 
      <font size="1">*Hold Ctrl Key Down to Select Multiple Bundles</font></td> 

    <td bgcolor="#ffffff" class="style6"> 
      <asp:ListBox ID="bundles" SelectionMode="Multiple" runat="server" Height="86px" 
       Width="250px" Enabled="True" 
       ValidationGroup="ValidationGroup" CausesValidation="True"> 
      </asp:ListBox> 
    </td> 

    <td bgcolor="#ffffff" class="style2"> 
       <asp:RequiredFieldValidator ID="BundleValidator" runat="server" Text="*" 
         ErrorMessage="Select At Least 1 Bundle" ControlToValidate="bundles" 
         ValidationGroup = "ValidationGroup" ForeColor="Red" ></asp:RequiredFieldValidator> 

    </td> 
    </tr> 

    <asp:Button ID="Send_Button" runat="server" 
       Text="Send Invitation" ValidationGroup="ValidationGroup" Width="123px"/> 
     &nbsp;<br /> 
      <asp:Label ID="Send_Success" runat="server" Text="Invitation sent!" Visible="false"></asp:Label> 

      <br /> 
      <asp:ValidationSummary ID="ValidationSummary" runat="server" ForeColor="Red" 
       ValidationGroup="ValidationGroup" /> 

質問:あなたがお勧めですかどのような代替コードまたは回避策この問題?

ありがとうございます!

+0

私はasp.netでたくさんのexpを持っていませんが、Page.isValidを確認しました – Kashif

+0

あなたのボタンのvalidationGroupはありますか?あまり問題はありませんが、ajax ConfirmButtonの使用をお勧めします。 –

+0

私はリストボックスのアイテムの人口はクライアント側で発生すると思いますか?送信ボタン操作はどうですか?ポストバックがあるのですか、それともクライアント側ですか?私はどちらか一方または両方の動作が 'RequiredFieldValidator'クライアント側の機能を台無しにしていると推測しています。送信ボタンがポストバックを行う場合、クリックハンドラの 'Page.IsValid'からどのような価値が得られますか? – pseudocoder

答えて

0

EDIT: は、私が最初のリストボックスから、すなわち "lbCarriers" を Autopost="true"を削除して、それが今取り組んでいる "lbCarriers"

CausesValidation="true"を追加します。

+0

lbCarriersのAutopost = falseの場合、Bundlesリストボックスはデータをロードしません。 –

+0

"lbCarriers"でCausesValidation = "true"を試しましたか – Kashif

+0

はい。 "lbCarriers"でCausesValidation = "true"を指定すると、バンドルのリストボックスにデータがロードされません。また、どのようにw Ajaxを実行するのか知っていますか? –

関連する問題