2014-01-07 3 views
0

В следующем коде я использую обязательный идентификатор и вместе с событием подтверждения onclientclick в моих событиях вставки и обновления.Конфликтующее событие OnClientClick и RequiredFieldValidator

Если требуемый идентификатор не выполняется, валидатор правильно предотвращает появление обновления или вставки. Тем не менее, событие подтверждения onclientclick все еще срабатывает, поскольку кнопка все еще доступна для клика. Есть ли способ предотвратить включение события проверки onclientclick до тех пор, пока не будет удовлетворен требуемый параметр валидатора или не будет отключен ссылка на вставку/обновление до тех пор, пока не будет удовлетворен требуемый параметр валидатора?

Я бы предпочел решение, отличное от javascript/jquery, но я открыт для него, если нет другого пути.

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
       DataSourceID="ObjectDataSource2" CssClass="detail" 
        OnItemInserted="UpdateGrid" CaptionAlign="Left"> 
       <Fields> 
        <asp:TemplateField HeaderText="APP" SortExpression="APP"> 
         <EditItemTemplate> 
          <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("APP") %>'></asp:TextBox> 
         </EditItemTemplate> 
         <InsertItemTemplate> 
          <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("APP") %>'></asp:TextBox> 
          &nbsp; 
          <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
           ControlToValidate="TextBox1" 
           ErrorMessage="New applications must have an App_Tag"></asp:RequiredFieldValidator> 
         </InsertItemTemplate> 
         <ItemTemplate> 
          <asp:Label ID="Label1" runat="server" Text='<%# Bind("APP") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 


        <asp:TemplateField ShowHeader="False"> 
         <EditItemTemplate> 
          <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" 
           CommandName="Update" Visible='<%# ShowEditButton() %>' OnClientClick="if (!confirm('Are you sure you want update?')) return false;" Text="Update"></asp:LinkButton> 
          <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" 
           CommandName="Cancel" Text="Cancel"></asp:LinkButton> 
         </EditItemTemplate> 
         <InsertItemTemplate> 
          <asp:LinkButton ID="LinkButton9" runat="server" CausesValidation="False" 
           CommandName="Insert" ValidationGroup="group1" Visible='<%# ShowEditButton() %>' OnClientClick="if (!confirm('Are you sure you want insert?')) return false;" Text="Insert"></asp:LinkButton> 
          <asp:LinkButton ID="LinkButton10" runat="server" 
           CommandName="Cancel" OnClick="HidePopUp" Text="Cancel"></asp:LinkButton> 
         </InsertItemTemplate> 
         <ItemTemplate> 
          <asp:LinkButton ID="LinkButton4" runat="server" CausesValidation="False" 
           CommandName="Edit" OnClick="EditMode" Text="Edit" Visible='<%# ShowEditButton() %>' ></asp:LinkButton> 
          <asp:LinkButton ID="LinkButton10" runat="server" CausesValidation="False" 
           CommandName="Cancel" OnClick="HidePopUp" Text="Close"></asp:LinkButton> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Fields> 
      </asp:DetailsView> 

ответ

0

Вы можете посмотреть на канавы RequiredFieldValidator вообще и обрабатывать как проверки и ваш диалог подтверждения в OnClientClick (вызов функции JavaScript в OnClientClick вместо обработки его рядного). Я знаю, что это решение для JavaScript, но, вероятно, это самый простой способ.

+0

Спасибо за комментарий. Я не могу найти другого способа сделать это, поэтому я рассматриваю предложенное вами решение Javascript. – TimidObserver

+0

Вам все равно придется проверять серверную сторону, если кто-то отключит JavaScript. – sh1rts