1

テキストボックスとrequiredfieldvalidatorといくつかのボタンを備えた更新パネルがあります。

ページロード時に、ラベルとボタンが表示されます。ボタンを押すと、テキストボックスとバリデータが (他のボタンと共に) 表示されます。

表示の基本的な変更は正常に機能します。ただし、(動的に設定されている) バリデーターは、テキスト ボックスにデータが入力されていても、エラー メッセージを表示します。テキストボックスにデータが入力されている場合、送信ボタンを押すと実際に機能しますが、私のコードには明らかに何か問題があります。

  <asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>
        <%
        If DoNameUpdate = "" then
        %>
          <div class="formrow">
            <div class="standardlabel">Name: </div>
            <div class="fakeformfield"><%=TheName%></div>
            <div class="buttonclass"><asp:ImageButton ID="ImageButton1" ImageUrl="/images/changebutton.gif" alt="Change" CssClass="formsub" runat="server" /></div>
          </div>
        <%
        Else
        %>
        <div class="formrow">
          <asp:Label AssociatedControlID="client_name" CssClass="standardlabel" runat="server" Text="Name "></asp:Label><span class="mandatory">*</span>
          <asp:TextBox ID="client_name" runat="server" MaxLength="255" CssClass="textboxborder"></asp:TextBox><BR>
          <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="client_name" Display="Dynamic" CssClass="error" ErrorMessage="Required" InitialValue=""></asp:RequiredFieldValidator>
          <div class="buttonclass"><asp:ImageButton ID="ImageButton2" ImageUrl="/images/savebutton.gif" alt="Save Changes" CssClass="formsub" runat="server" /></div>
        </div>
        <%
        End if
        %>
      </ContentTemplate>
  </asp:UpdatePanel>

そしてコードビハインド...

Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
    Dim myReader As IDataReader = CType(SqlDataSource1.Select(DataSourceSelectArguments.Empty), IDataReader)
    If myReader.read then
      client_name.text = myReader("ClientName")
    End if
    myReader.close
  DoNameUpdate = "val"
End Sub
Protected Sub ImageButton2_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton2.Click
  SqlDataSource2a.update()
  Dim myReader As IDataReader = CType(SqlDataSource1.Select(DataSourceSelectArguments.Empty), IDataReader)
  If myReader.read then
      TheName = myReader("ClientName")
  End if
  myReader.close
  DoNameUpdate = ""
End Sub

助言がありますか?

4

1 に答える 1

1

カスタム イベントで updatepanel 内のバリデータを検証します。
jqueryを使用して「blur」イベント(または他のイベント「click」、「change」、「keypress」、「keyup」など)で検証を呼び出すことができます。例えば:

 function TextBoxValidate() {
    $('input:[type="text"]:[id*="client_name"]').each(function () { $(this).on('blur', function () { var txtId = this.id; $('span').each(function () { if (this.controltovalidate == txtId) ValidatorValidate(this); }); }); }); 
}
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(TextBoxValidate);

このコード サンプルを JavaScript ファイルに追加し、jquery ライブラリを含めるだけです。

于 2012-10-30T09:05:25.227 に答える