How to implement Validation Controls with multiple submit buttons - c#

There are two submit buttons on web form, Required field validation is there, i want if i click first submit button, it doesn't check the second submit.
Mean i only want that only first text box Required validation must work?
what should i have to do that i can segregate validation on multiple submit buttons
For more detail, snap shot is included.

What you need is validationGroup property
The required Filed Validator will have following property
<asp:requiredfieldvalidator id="RequiredFieldValidator2"
...
validationgroup="Group1"
...
runat="Server">
</asp:requiredfieldvalidator>
And associated button
<asp:button id="Button1"
text="Validate"
causesvalidation="true"
validationgroup="Group1"
runat="Server" />
In this way you can organise which validation to perform on any specific button click

Related

ValidationGroup Not Firing

I have a text box with required field validator:-
<asp:TextBox ID="txtCName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvCName" runat="server" ErrorMessage="Pleas Enter Name" ControlToValidate="txtCName" ></asp:RequiredFieldValidator>
I need to show error message on button click:-
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click"
ValidationGroup="sub">
I am using the following code to assign validation group to the required field validator (it is in document.ready() function) :-
$("#<%=rfvCName.ClientID %>").attr('ValidationGroup', 'sub');
But it is not showing any error message on button click. Please help me.
I need to do it using Jquery. I don't want to assign ValidatioGroup directly to the control.
Add validation group ValidationGroup="Sub"
<asp:RequiredFieldValidator ID="rfvCName" runat="server" ErrorMessage="Pleas Enter Name" ValidationGroup="sub" ControlToValidate="txtCName" ></asp:RequiredFieldValidator>
when the page(server side) prerender the object requiredFieldValidator, some javascript is added into page automatically by .net framework.
this javascrript code check the validationgroup.
add manually the validationgroup attribute client-side without this javascript code not work.
you can see this code in developpers tool searching "ValidationGroup"
if you cannot add attribute in html, you can add this attribute in a event server side like load or prerender.

Using multiple forms, submit buttons on an ASP.NET web forms page

I have 3 different submit buttons(Log In, Search, Insert) in the same page and what I want is to find the best way to have this 3 buttons doing a different things when I press them, or I press enter while I am about to press them.
As you can see from my photo, when I press Log In the Insert is pressed too because I have a global form in my Master Page.
I tried to use different forms, but i can't because I need them to have runat="server", which is not possible for a page to have.
I use asp Texboxes:
<asp:TextBox class="text-input" ID="txtLoginEmail" runat="server"
Height="15px" Width="130px"></asp:TextBox>
and asp Buttons:
<asp:Button class="submit google-button" ID="btnLogin" onclick="btnLogin_Click"
runat="server" Text="Log in" />
except my Search button which is linkButton:
<asp:LinkButton ID="searchLink" runat="server" onclick="searchLink_Click">Search</asp:LinkButton>
You may use Validation Groups to cause only required text boxes validation on specific button click. And then in event handler to concrete button you may execute specific logic.

Validation effects the entire form, no button can be pressed

I've got a page that contains a huge amount of controls, (gridviews, reportviewers, buttons etc.)
Now I've a couple of textboxes and dropdowns that represent a "form" user might want to fill up and submit by clicking a button. Some of these controls contain "RequiredFieldValidator"s.
<fieldset runat="server" >
<asp:Label ID="lblName" runat="server" Text="Name:" AssociatedControlID="txtName" />
<asp:RequiredFieldValidator ID="rfvTxtName" runat="server" ControlToValidate="txtName" Text="(Required)" />
<asp:TextBox ID="txtName" Width="175px" runat="server" />
....
....
</fieldset>
The problem I encounter is that no other button on the entire asp form can be clicked because of these validation controls.
The question is; how do I set this validation to only listen to that particular fieldset and not the whole page?
Set the ValidationGroup property of those controls to something unique.
More info here.
Set your controll's ValidationGroup property to make them one group . Like
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button"
ValidationGroup="MyGroup" />
The ValidationGroup property specifies which group of controls is
validated on validation. This property is mostly used when there are
several buttons in a form.
ASP.NET ValidationGroup Property
You ca also change property CausesValidation to False for control that you don't want to validate.

Required field validator stopping image button onclick?

I'm having an issue with an image button that I have built. When I attach required field validators to the page, they stop the button onclick event from firing. I am pretty perplexed by this as I can't see any issues in my code!
Please could you cast your eyes over this and help me out?
Cheers
<asp:TextBox ID="TB_Newsletter" runat="server" CssClass="nwsltr-input"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ValidationGroup="V1" runat="server" Display="Dynamic" ControlToValidate="TB_Newsletter" ErrorMessage="You must enter your email address"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
runat="server" ValidationGroup="V1" Display="Dynamic"
ValidationExpression="^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*#([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"
ErrorMessage="Invalid Email Address" ControlToValidate="TB_Newsletter"></asp:RegularExpressionValidator>
<asp:ImageButton ID="IB_SubScri"
ImageUrl="~/_includes/images/buttons/nwsltr-btn.png" runat="server"
onclick="IB_SubScri_Click" CausesValidation="True" ValidationGroup="V1"/>
When you press the button it submits the form, but prior to that the field validators are firing by script - the form won't post if validation fails. <asp:Imagebutton /> and <asp:Button /> types allow you to disable validation when they are pressed:
<asp:ImageButton ... CausesValidation="False"/>
From MSDN on the CausesValidation property:
true if the control causes validation
to be performed on any controls
requiring validation when it receives
focus; otherwise, false. The default
is true.
See this MSDN reference for more information.
Obviously, we assume here that the validator firing when pressing this button is not required.
Change "CausesValidation" to False on your ImageButton

button and validators

I have a Table with two textboxes. Every textbox has a required validator to make the user insert data in the textbox.
I also have a Login table to confirm user privilages.
When I submit the button of login, the validators from the first table appear and prevent the user from logging in. I changed the login button property (Causes validation ) to false, but the validators which I added in the login table didn't appear.
So please how can I solve this problem.
I think you can solve your problem by using ValidationGroups. Here is an excerpt from a page with a longer explanation for you:
This page has two groups – a “Group1” and a “Group2” of validators. There are then two buttons on the page – when button1 is clicked, the first group of validators will fire. When button2 is clicked, the second group of validators will fire. Postback will be blocked client-side by default if the validation fails:
<html>
<body>
<form runat=“server”>
<asp:textbox id=“TextBox1” runat=“server”/>
<asp:requiredfieldvalidator ValidationGroup=“Group1”
ErrorText=“Need to Fill in Value!”
ControlToValidate=“TextBox1”
runat=“server”/>
<asp:textbox id=“TextBox2” runat=“server”/>
<asp:requiredfieldvalidator ValidationGroup=“Group2”
ErrorText=“Need to Fill in Value!”
ControlToValidate=“TextBox2”
runat=“server”/>
<asp:button text=“Group1” ValidationGroup=“Group1” runat=“server”/>
<asp:button text=“Group2” ValidationGroup=“Group2” runat=“server”/>
</form>
</body>
</html>
What you need to use is a ValidationGroup attribute on both the buttons and the validations. This allows certain actions to only enforce a subset of validators on the page when the button is clicked.
<asp:TextBox ID="txtA" runat="server" />
<asp:RequiredFieldValidator ID="rfvA" runat="server" ErrorMessage="Message." ControlToValidate="txtA" ValidationGroup="A" />
<asp:Button ID="btnA" runat="server" Text="A" ValidationGroup="A" />
<asp:TextBox ID="txtB" runat="server" />
<asp:RequiredFieldValidator ID="rfvB" runat="server" ErrorMessage="Message." ControlToValidate="txtA" ValidationGroup="B" />
<asp:Button ID="btnB" runat="server" Text="B" ValidationGroup="B" />
Now when btnA is clicked, it will only check whether rfvA is valid (checking txtA) and when btnB is clicked, it will only check whether rfvB is valid. And yes you can have multiple validation controls in the same validation group.
When you set the CausesValidation property to false, you were disabling all validation actions for the button, not just the ones you didn't want on.

Categories

Resources