I have an update Panel with some textbox and I'm trying to replace the requiredfieldvalidators by using the required attribute on the textboxes which makes everything much cleaner. Only first textbox has required for testing purposes.
<asp:UpdatePanel runat="server">
<ContentTemplate>
<table style="border-collapse: separate; border-spacing: 8px;">
<tbody>
<tr>
<td style="float: right;">
<asp:Label ID="lblRefCliente" runat="server" Text="Referência Cliente " ForeColor="#142658" Style="font-weight: bold;"></asp:Label><span style="color: red;">* </span>
</td>
<td>
<asp:TextBox ID="txtRefClient" CssClass="txtStyle" runat="server" required></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvRefClient" runat="server" ForeColor="red" ControlToValidate="txtRefClient" ErrorMessage=""></asp:RequiredFieldValidator>
</td>
<td style="float: right;">
<asp:Label ID="lblRefInterna" runat="server" Text="Referência Interna " ForeColor="#142658" Style="font-weight: bold;"></asp:Label><span style="color: red;">* </span>
</td>
<td>
<asp:TextBox ID="txtRefInterna" CssClass="txtStyle" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvRefInterna" runat="server" ForeColor="red" ControlToValidate="txtRefInterna" ErrorMessage=""></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td style="float: right;">
<asp:Label ID="lblIndice" runat="server" Text="Indíce " ForeColor="#142658" Style="font-weight: bold;"></asp:Label><span style="color: red;">* </span>
</td>
<td>
<asp:TextBox ID="txtIndice" CssClass="txtStyle" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvIndice" runat="server" ForeColor="red" ControlToValidate="txtIndice" ErrorMessage=""></asp:RequiredFieldValidator>
</td>
<td style="float: right;">
<asp:Label ID="lblProject" runat="server" Text="Projecto " ForeColor="#142658" Style="font-weight: bold;"></asp:Label><span style="color: red;">* </span>
</td>
<td>
<asp:TextBox ID="txtProject" CssClass="txtStyle" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvProject" runat="server" ForeColor="red" ControlToValidate="txtProject" ErrorMessage=""></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td style="float: right;">
<asp:Label ID="lblCadMensal" runat="server" Text="Cadência Mensal " ForeColor="#142658" Style="font-weight: bold;"></asp:Label><span style="color: red;">* </span>
</td>
<td>
<asp:TextBox ID="txtCadMensal" CssClass="txtStyle" AutoPostBack="true" runat="server" OnTextChanged="txtCadMensal_TextChanged"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvCadMensal" runat="server" ForeColor="red" ControlToValidate="txtCadMensal" ErrorMessage=""></asp:RequiredFieldValidator>
</td>
<td style="float: right;">
<asp:Label ID="lblDesenho" runat="server" Text="Desenho " ForeColor="#142658" Style="font-weight: bold;"></asp:Label><span style="color: red;">* </span>
</td>
<td>
<asp:TextBox ID="txtDesenho" CssClass="txtStyle" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvDesenho" runat="server" ForeColor="red" ControlToValidate="txtDesenho" ErrorMessage=""></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td style="float: right;">
<asp:Label ID="lblNumCOMDEV" runat="server" Text="Nº de COMDEV " ForeColor="#142658" Style="font-weight: bold;"></asp:Label><span style="color: red;">* </span>
</td>
<td>
<asp:TextBox ID="txtNumCOMDEV" CssClass="txtStyle" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvNumCOMDEV" runat="server" ForeColor="red" ControlToValidate="txtNumCOMDEV" ErrorMessage=""></asp:RequiredFieldValidator>
</td>
<td style="float: right;">
<asp:Label ID="lblNumFormas" runat="server" Text="Nº Formas de Lançamento " ForeColor="#142658" Style="font-weight: bold;"></asp:Label><span style="color: red;">* </span>
</td>
<td>
<asp:TextBox ID="txtNumFormas" CssClass="txtStyle" runat="server" AutoPostBack="true" OnTextChanged="txtNumFormas_TextChanged"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvNumFormas" runat="server" ForeColor="red" ControlToValidate="txtNumFormas" ErrorMessage=""></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td style="float: right;">
<asp:Label ID="lblCapacidadeReal" runat="server" Text="Capacidade Real(métodos) " ForeColor="#142658" Style="font-weight: bold;"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtCapacidadeReal" CssClass="txtStyle" runat="server"></asp:TextBox>
</td>
</tr>
</tbody>
</table>
</ContentTemplate>
</asp:UpdatePanel>
Now the problem is that i Have this textbox txtNumComps that creates some dynamic textboxes for some input and does it OnTextChanged event and is doing it asynch. The problem is that when the validation from the required attribute fires, the OnTextChanged does not trigger, only triggers the 2nd i write something. I don't see what can cause this problem. if someone could help i'd appreciate.
<asp:UpdatePanel runat="server" ID="NumComps">
<ContentTemplate>
<table>
<tr>
<td>
<asp:Label ID="lblNumComps" runat="server" Text="Nº de Componentes " ForeColor="#142658" Style="font-weight: bold;"></asp:Label><span style="color: red; margin-right: 5px;"> * </span>
</td>
<td>
<asp:TextBox ID="txtNumComps" runat="server" AutoPostBack="True" OnTextChanged="txtNumComps_TextChanged"></asp:TextBox>
</td>
<td>
<asp:CustomValidator ID="cvNumComps" runat="server" ForeColor="red" ErrorMessage="" ControlToValidate="txtNumComps" ClientValidationFunction="NumpCompsValidator"></asp:CustomValidator>
</td>
</tr>
</table>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtNumComps" EventName="TextChanged" />
</Triggers>
</asp:UpdatePanel>
Related
I have been following this tutorial to help me create a basic shopping basket. When trying to run the code with the below method added which should calculate the TotalPrice & TotalProducts of the basket on the OrderForm, I get the following error:
'System.FormatException' occurred in mscorlib.dll but was not handled in user code. Additional information: Input string was not in a correct format.
pointing at the line
long ProductPrice =
Convert.ToInt64(PriceLabel.Text) *
Convert.ToInt64(ProductQuantity.Text);
In the database, an example of a ProductPrice is "199.99" where as the tutorial only used whole numbers e.g. "199". I am not sure if this is what is causing the issue? If this is the case, how should the code below be modified to include the decimal point too?
I am new to coding, so this is really stressing me out, I really would appreciated some guideance/suggested code changes to overcome this issue
Thanks as ever guys!
private void UpdateTotalBill()
{
long TotalPrice = 0;
long TotalProducts = 0;
foreach (DataListItem item in dlBasketItems.Items)
{
//Finds the price label on pnlMyBasket
Label PriceLabel = item.FindControl("lblPrice") as Label;
//Finds the quantity text box on pnlMyBasket
TextBox ProductQuantity = item.FindControl("txtProductQuantity") as TextBox;
long ProductPrice = Convert.ToInt32(PriceLabel.Text) * Convert.ToInt32(ProductQuantity.Text);
TotalPrice = TotalPrice + ProductPrice;
TotalProducts = TotalProducts + Convert.ToInt32(ProductQuantity.Text);
}
txtTotalPrice.Text = Convert.ToString(TotalPrice);
txtTotalProducts.Text = Convert.ToString(TotalProducts);
}
pnlMyBasket
<asp:Panel ID="pnlMyBasket" runat="server" ScrollBars="Auto" Height="500px" BorderColor="Black" BorderStyle="Inset" BorderWidth="1px" Visible="false">
<table align="center" cellspacing="1">
<tr>
<td align="center" class="auto-style4">
<asp:Label ID="lblAvailableStockAlert" runat="server" ForeColor="Red" Font-Bold="true"></asp:Label>
<asp:DataList ID="dlBasketItems" runat="server" RepeatColumns="3" Font-Bold="False"
Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False"
Width="551px">
<ItemTemplate>
<div align="left">
<table cellspacing="1" style="border: 1px ridge #9900FF; text-align: center; width: 172px;">
<tr>
<td style="border-bottom-style: ridge; border-width: 1px; border-color: #000000">
<asp:Label ID="lblProductName" runat="server" Text='<%# Eval("ProductName")%>' Style="font-weight: 700"></asp:Label>
</td>
</tr>
<tr>
<td>
<img alt="" src='<%# Eval("ProductImageUrl") %>' runat="server" id="imgProductPhoto" style="border: ridge 1px black;
width: 157px; height: 130px;" />
</td>
</tr>
<tr>
<td>AvailableStock: <asp:Label ID="lblAvailableStock" runat="server" Text='<%# Eval("ProductStock") %>'
ToolTip="Available Stock" ForeColor="Red" Font-Bold="true"></asp:Label>
<br />
Price:<asp:Label ID="lblPrice" runat="server" Text='<%# Eval ("ProductPrice") %>'></asp:Label>
<br /> Quantity Required x
<asp:TextBox ID="txtProductQuantity" runat="server" Width="20px" Height="10px" MaxLength="2" OnTextChanged="txtProductQuantity_TextChanged" AutoPostBack="true" ></asp:TextBox>
<asp:HiddenField ID="hfProductID" runat="server" Value='<%# Eval("ProductID") %>' />
</td>
</tr>
<tr>
<td>
<hr /> <asp:Button ID="btnRemoveFromBasket" runat="server" CommandArgument='<%# Eval("ProductID") %>'
Text="Remove From Basket" Width="100%" BorderColor="Black" BorderStyle="Inset" BorderWidth="1px"
OnClick="btnRemoveFromBasket_Click" CausesValidation="false" />
</td>
</tr>
</table>
</div>
</ItemTemplate>
<ItemStyle Width="33%" />
</asp:DataList>
</td>
</tr>
</table>
</asp:Panel>
pnlOrderForm
<asp:Panel ID="pnlOrderForm" runat="server" ScrollBars="Auto" Height="500px" BorderColor="Black"
BorderStyle="Inset" BorderWidth="1px" Visible="false">
<table style="width: 258px;">
<tr>
<td align="left">
Name:
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="txtCustomerName" runat="server" Width="231px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtCustomerName"
ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="left">
PhoneNo:
</td>
</tr
<tr>
<td>
<asp:TextBox ID="txtCustomerPhoneNo" runat="server" Width="231px" MaxLength="10"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtCustomerPhoneNo"
ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="left">
EmailID
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="txtCustomerEmailID" runat="server" Width="231px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtCustomerEmailID"
ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="left">
Address
</td>
</tr>
<tr>
<td align="left">
<asp:TextBox ID="txtCustomerAddress" runat="server" Width="227px" Height="81px"
TextMode="MultiLine"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="txtCustomerAddress"
ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="left">
Total Products :
</td>
</tr>
<tr>
<td align="center">
<asp:TextBox ID="txtTotalProducts" runat="server" ReadOnly="True" Width="231px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ControlToValidate="txtTotalProducts"
ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="left">
Total Price :
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="txtTotalPrice" runat="server" ReadOnly="True" Width="231px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ControlToValidate="txtTotalPrice"
ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="left">
Payment Mode:
</td>
</tr>
<tr>
<td align="left">
<asp:RadioButtonList ID="rblMethodOfPayment" runat="server">
<asp:ListItem Value="1" Selected="True">1. Collect & Pay In Store</asp:ListItem>
<asp:ListItem Value="2">2. Pay with card</asp:ListItem>
</asp:RadioButtonList>
</td>
</tr>
<tr>
<td>
<br />
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnPlaceOrder" runat="server" OnClick="btnPlaceOrder_Click" Style="font-weight: 700"
Text="PlaceOrder" Width="90px" />
</td>
</tr>
<tr>
<td>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtCustomerEmailID"
ErrorMessage="Please Enter Valid EmailId" ForeColor="Red" ValidationExpression="\w+([-+.']\w+)*#\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
</td>
</tr>
</table>
</asp:Panel>
I think you need to convert to decimal, then to long. Like this:
long ProductPrice;
try
{
// hey you never know, someone might just put in an int64 in that textbox!
ProductPrice = Convert.ToInt32(PriceLabel.Text) *
Convert.ToInt32(ProductQuantity.Text);
}
catch
{
decimal tempPrice = Convert.ToDecimal(PriceLabel.Text) *
Convert.ToDecimal(ProductQuantity.Text);
ProductPrice = Convert.ToInt64(tempPrice);
}
Most direct way to how you are currently doing:
var ProductPrice = Convert.ToDecimal(PriceLabel.Text) * Convert.ToDecimal(ProductQuantity.Text);
this will throw an exception if the value cannot be converted to a decimal. Decimal.TryParse() would be better.
https://msdn.microsoft.com/en-us/library/system.decimal.tryparse(v=vs.110).aspx
Hi I have two usercontrols.
The first user control has a button and the second user control has a popup control.
I registered the second user control in the first user control with id=ctlPopUp
Onclick event of button I have to display the popup control.
I tried with
protected void btnUser_Click(object sender, EventArgs e)
{
var userCtlPopup = ctlPopUp.FindControl("pcDownload");
userCtlPopup.Visible = true;
}
It doesn't work. Can you please suggest?
Hi here is the user control markups:
POpupUsercontrol:
<div id="divDownload" runat="server" visible="true">
<dx:aspxpopupcontrol id="pcDownload" runat="server" showpagescrollbarwhenmodal="true"
clientinstancename="pcDownload" enableclientsideapi="true" modal="True" popuphorizontalalign="WindowCenter"
popupverticalalign="WindowCenter" showheader="false" allowdragging="True" enableanimation="False"
enableviewstate="False" width="600px" autoupdateposition="true" closeaction="CloseButton">
<ContentCollection>
<dx:PopupControlContentControl ID="PopupControlContentControl4" runat="server"
Width="100%">
<dx:ASPxPanel ID="ASPxPanel3" runat="server">
<PanelCollection>
<dx:PanelContent ID="PanelContent4" runat="server">
<div>
<table class="cChildTable">
<tr>
<td>
<h3>Download</h3>
</td>
</tr>
<tr>
<td class="auto-style1">
<div class="hr">
</div>
<asp:Label ID="lblDownLoadMessages" runat="server" CssClass="cMessageArea"></asp:Label>
</td>
</tr>
</table>
<table class="cChildTable" border="0">
<tr><td style="font:bold" colspan="2"><asp:Label ID="Title" runat="server" Text="Content Link Title"></asp:Label></td></tr>
<tr>
<td style="vertical-align: top; width: 30px; padding: 2px" rowspan="8">
<asp:CheckBox ID="chkImg" runat="server" AutoPostBack="True" Checked="true" />
</td>
<td style="vertical-align: top" rowspan="3">
<asp:Image runat="server" ID="imgUpload" Width="100px" Height="100px" Style="top: 0px;" AlternateText="No Image" />
</td>
<td>
<asp:CheckBox ID="chkName" runat="server"
AutoPostBack="true" />
</td>
<td class="cLabel" style="width: 15%">
<asp:Label ID="lblName" runat="server" Text="Name:" Width="90px"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtName" runat="server" CssClass="cText" Width="300px" MaxLength="75"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:CheckBox ID="chkCompany" runat="server"
AutoPostBack="true" />
</td>
<td class="cLabel" style="width: 15%">
<asp:Label ID="lblCompany" runat="server" Text="Company:" Width="90px"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtCompany" runat="server" CssClass="cText" Width="300px" MaxLength="75"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:CheckBox ID="chkAddress" runat="server"
AutoPostBack="true" />
</td>
<td class="cLabel" style="width: 15%">
<asp:Label ID="lblAddress" runat="server" Text="Address:" Width="90px"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtAddress" runat="server" CssClass="cText" Width="300px" MaxLength="75"></asp:TextBox>
</td>
</tr>
<tr>
<td rowspan="5" style="vertical-align:top"><asp:LinkButton ID="lnkAddImg" runat="server"> </asp:LinkButton></td>
<td>
<asp:CheckBox ID="chkCtyStateZip" runat="server"
AutoPostBack="true" />
</td>
<td class="cLabel" style="width: 15%">
<asp:Label ID="lblCtyStateZip" runat="server" Text="City, State Zip:" Width="90px"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtCtyStateZip" runat="server" CssClass="cText" Width="300px" MaxLength="75"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:CheckBox ID="chkPhone" runat="server"
AutoPostBack="true" />
</td>
<td class="cLabel" style="width: 15%">
<asp:Label ID="lblPhone" runat="server" Text="Phone:" Width="90px"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtPhone" runat="server" CssClass="cText" Width="150px" MaxLength="75"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:CheckBox ID="chkFax" runat="server"
AutoPostBack="true" />
</td>
<td class="cLabel" style="width: 15%">
<asp:Label ID="lblFax" runat="server" Text="Fax:" Width="90px"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtFax" runat="server" CssClass="cText" Width="150px" MaxLength="75"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:CheckBox ID="chkEmail" runat="server"
AutoPostBack="true" />
</td>
<td class="cLabel" style="width: 15%">
<asp:Label ID="lblEmail" runat="server" Text="Email:" Width="90px"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtEmail" runat="server" CssClass="cText" Width="150px" MaxLength="75"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:CheckBox ID="chkOther" runat="server"
AutoPostBack="true" />
</td>
<td class="cLabel" style="width: 15%">
<asp:Label ID="lblOther" runat="server" Text="Other:" Width="90px "></asp:Label>
</td>
<td>
<asp:TextBox ID="txtOther" runat="server" CssClass="cText" Width="150px" MaxLength="75"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="4">
<div class="buttons">
<span id="span2" class="cBtnLeft"><span class="cBtnMid"><span class="cBtnRight">
<asp:Button ID="btnDownLoad" runat="server" Width="65px" CssClass="cBtnRight" Text="Download"
OnClick="btnDownLoad_Click"/>
</span></span></span><span id="span1" class="cBtnLeft"><span class="cBtnMid"><span
class="cBtnRight">
<asp:Button ID="btnCancel" runat="server" Width="65px" CssClass="cBtnRight" Text="Cancel"
Visible="true" OnClick="btnCancel_Click" />
</span></span></span>
</div>
</td>
</tr>
</table>
</div>
</dx:PanelContent>
</PanelCollection>
</dx:ASPxPanel>
</dx:PopupControlContentControl>
</ContentCollection>
</dx:aspxpopupcontrol>
</div>
Usercontrol where the popup user control is called
<asp:Panel runat="server" ID="pnlCategoryDetail" Width="100%">
<dx:ASPxDataView ID="dvMARCCategoryDetail" runat="server" Width="100%"
ClientInstanceName="dvMARCCategoryDetail" style="clear: both" ColumnCount="2" RowsPerPage="2" OnPageIndexChanged="dvMARCCategoryDetail_PageIndexChanged">
<itemtemplate>
<table>
<tbody>
<tr>
<td>
<table>
<tr>
<td>
<asp:Image ID="ModelImage" runat="server" ImageUrl='<%#Eval("ImageUrl") %>'>
</asp:Image>
</td>
<td>
<div style="width: 5px" class="Spacer">
</div>
</td>
</tr>
</table>
</td>
<td>
<table>
<tr>
<td>
<asp:Label ID="ModelLabel" runat="server" Text='<%# Eval("DocumentName") %>' Font-Bold="True"
>
</asp:Label></td>
</tr>
<tr>
<td style="text-align:left;padding-bottom:1em;">
<asp:Label ID ="txtText1" runat="server" Text="The May edition of News Brief contains seven newsworthy articles"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Label ID ="txtText2" runat="server" Text="Suggested Subject Line: The May 2014 News Brief has arrived!"></asp:Label>
</td>
</tr>
<tr>
<td style="white-space:nowrap;">
<a id="clink2" style="width:60px">Content Link 1</a>
<asp:ImageButton ID="ImageButton2" runat="server" OnClick="btnArrow_Click" ImageUrl="~/Images/DownloadArrow.png" ToolTip="Download Item" style="padding-top:8px"/>
<asp:ImageButton ID="ImageButton1" runat="server" OnClick="btnAdd_Click" ImageUrl="~/Images/Add.png" ToolTip="Add Item" style="padding-top:8px"/>
</td>
<td> </td></tr>
</table>
</td>
</tr>
</tbody>
</table>
</itemtemplate>
<paddings padding="0px" />
<itemstyle height="50px">
</itemstyle>
</dx:ASPxDataView>
</asp:Panel>
<div id="divCategoryPopup" runat="server">
<downloadPopUp:categoryPopup id="ctlPopUp" runat="server"></downloadPopUp:categoryPopup>
</div>
On click of btnArrow_Click the popup user control should be displayed
I have 3 text fields on my page and one calendar control. After I fill in the 3 text boxes, then click a date on the calendar control, the bottom textfield clears out, losing its value. The other 2 text boxes have their values available and do not get cleared. The textboxes all have the same properties, but I can't figure out how to keep the value in the third textbox.
<table class="auto-style2" align="center">
<tr>
<td class="auto-style4" style="text-align: right">Project Name:</td>
<td style="text-align: left">
<asp:TextBox ID="TxtProjectName" runat="server" height="32px" width="211px" MaxLength="50" OnTextChanged="TxtProjectName_TextChanged" onKeyUp="Count(this,50)" onChange="Count(this,50)" TextMode="MultiLine"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TxtProjectName" ErrorMessage="Field is required"></asp:RequiredFieldValidator>
</td>
</tr>
</table>
<table class="auto-style2" align="center">
<tr>
<td class="auto-style4" style="text-align: right">Project Description:</td>
<td style="text-align: left">
<asp:TextBox ID="TxtDescription" runat="server" height="45px" width="211px" TextMode="MultiLine" OnTextChanged="TxtDescription_TextChanged"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TxtDescription" ErrorMessage="Field is required"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="auto-style4" style="text-align: right">Contact Name:</td>
<td style="text-align: left">
<asp:TextBox ID="TxtContactName" runat="server" Width="203px" OnTextChanged="TxtContactName_TextChanged" Height="16px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="TxtContactName" ErrorMessage="Field is required"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="auto-style5">Business Area:</td>
<td class="auto-style3">
<asp:DropDownList ID="DDLBusinessArea" runat="server" style="text-align: left">
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="auto-style4" style="text-align: right">Priority:</td>
<td style="text-align: left">
<asp:DropDownList ID="DDLPriority" runat="server">
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="auto-style4" style="text-align: right">Desired Completion Date:</td>
<td style="text-align: left">
<asp:Calendar ID="Calendar1" runat="server">
<SelectedDayStyle Font-Bold="True" />
<TodayDayStyle ForeColor="#3333FF" />
</asp:Calendar>
</td>
</tr>
Its the TxtContactName that clears.
So, I was having some issues obtaining the value of of an ASP TextBox Server Control while it was in a FormView. Here is the code.
<EditItemTemplate>
<table>
<tr>
<td>
<div style="margin-bottom: 10px; font-family:Calibri;">
Project Number
</div>
</td>
<td colspan="2">
<asp:TextBox ID="projectidbox" runat="server" Width="90%" Style="margin-bottom: 10px;"
Text='<%# Bind("ProjectID") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td style=" font-family:Calibri;">
Project Name
</td>
<td>
<asp:TextBox ID="NameBox" runat="server" Width="90%" Text='<%# Bind("Name") %>'> </asp:TextBox>
</td>
<td style=" font-family:Calibri;">
Project Start
</td>
<td>
<asp:TextBox ID="dateStartedBox" runat="server" Width="90%" Text='<%# Bind("DateStarted")%>'></asp:TextBox>
</td>
<td style=" font-family:Calibri;">
Project End
</td>
<td>
<asp:TextBox ID="dateFinishedBox" runat="server" Width="102%" Text='<%# Bind("DateFinished")%>'></asp:TextBox>
</td>
</tr>
<tr>
<td style=" font-family:Calibri;">
Total Cost ($)
</td>
<td>
<asp:TextBox ID="TotalCostBox" runat="server" Width="90%" Text='<%# Bind("TotalCost")%>'></asp:TextBox>
</td>
<td style=" font-family:Calibri;">
Assess. Start
</td>
<td>
<asp:TextBox ID="assessmentStartBox" runat="server" Width="70%" Text='<%# Bind("BeginTerm")%>'></asp:TextBox>
</td>
<td style=" font-family:Calibri;">
Assess. End
</td>
<td>
<asp:TextBox ID="assessmentEndBox" runat="server" Width="90%" Text='<%# Bind("EndTerm")%>'></asp:TextBox>
</td>
</tr>
<tr>
<td style=" font-family:Calibri;">
Assessable Area
</td>
<td>
<asp:TextBox ID="AssessableFrontageBox" runat="server" Width="90%" Text='<%# Bind("AssessableFrontage")%>'></asp:TextBox>
</td>
<td style=" font-family:Calibri;">
Ordinance
</td>
<td>
<asp:TextBox ID="ordinancebox" runat="server" Width="70%" Text='<%# Bind("Ordinance")%>'></asp:TextBox>
</td>
<td style=" font-family:Calibri;">
Calc Field
</td>
<td>
<asp:TextBox ID="calcfieldbox" runat="server" Width="90%" Text='<%# Bind("CalcField")%>'></asp:TextBox>
</td>
</tr>
<tr>
<td style=" font-family:Calibri;">
Total Intersections
</td>
<td>
<asp:TextBox ID="intersectionsbox" runat="server" Width="90%" Text='<%# Bind("TotalIntersections") %>'></asp:TextBox>
</td>
<td style=" font-family:Calibri;">
County ID
</td>
<td>
<asp:TextBox ID="countyidbox" runat="server" Width="70%" Text='<%# Bind("CountyID") %>'></asp:TextBox>
</td>
<td style=" font-family:Calibri;">
Adjustment
</td>
<td>
<asp:TextBox ID="adjustmentbox" runat="server" Width="90%" Text='<%# Bind("Adjustment") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td style=" font-family:Calibri;">
Sum Assessments
</td>
<td>
<asp:TextBox ID="sumassessbox" runat="server" Width="90%" Text='<%# Eval("SumAssessments")%>'></asp:TextBox>
</td>
<td style=" font-family:Calibri;">
Status
</td>
<td>
<asp:DropDownList ID="DropDownList1" runat="server" Width="75%" Height="22px" DataValueField="Status">
<asp:ListItem></asp:ListItem>
<asp:ListItem>Pre-Planning</asp:ListItem>
<asp:ListItem>Active</asp:ListItem>
<asp:ListItem>Complete</asp:ListItem>
<asp:ListItem>Cancelled</asp:ListItem>
</asp:DropDownList>
</td>
<td colspan="2">
<asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal">
<asp:ListItem>Ln Ft</asp:ListItem>
<asp:ListItem>Acre</asp:ListItem>
<asp:ListItem>Flat</asp:ListItem>
</asp:RadioButtonList>
</td>
</tr>
<tr>
<td style="font-family:Calibri;"> Comments </td>
</tr>
<tr>
<td colspan="6">
<asp:TextBox ID="TextBox9" runat="server" TextMode="MultiLine" Width="90%" Text='<%# Bind("Comment") %>'></asp:TextBox>
</td>
</tr>
</table>
</EditItemTemplate>
You can use the FindControl function to seach for the text box.
var textbox = (TextBox)GridView.FindControl("txtName);
if (textbox != null)
{
//working goes here.
}
I have a page with the following mark up
<%# Page Title="" Language="C#" MasterPageFile="~/CaseAdmin.master" AutoEventWireup="true" CodeBehind="AddExhibit.aspx.cs" Inherits="Prototype5.AddExhibit" %>
<h2 class="style2">
<strong><span style="color: #FFFFFF">Add Exhibit
Form</span></strong></h2>
<div style="width: 600px">
<table style="width: 303px" align="left">
<tr>
<td class="style26" style="background-color: #666666">
<p class="style5" style="color: #000000; background-color: #666666;">
<strong style="background-color: #666666">Select Existing Case ID:
</strong>
</p></td>
<td class="" style="background-color: #C0C0C0" align="left">
<asp:DropDownList ID="DropDownListcaseid" runat="server"
onselectedindexchanged="DropDownListcaseid_SelectedIndexChanged">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="DropDownListcaseid"
ErrorMessage="Please select a valid case id from the dropdown menu"
ForeColor="Red">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style4" colspan="2">
</td>
</tr>
</table>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:CMSSQL3ConnectionString1 %>"
SelectCommand="SELECT [CaseID] FROM [Cases]"></asp:SqlDataSource>
</div>
<div style="width: 603px; height: 75px; ">
<table style="height: 66px; width: 598px; top: 277px; left: 268px;"
align="left">
<tr>
<td class="bold"
style="color: #000000; background-color: #666666; width: 127px;">
<strong>Exhibit Type</strong></td>
<td class="bold" style="background-color: #666666; width: 228px;">
<span style="color: #000000">Exhibit Image</td>
<td class="bold" style="background-color: #666666; width: 111px;">
<span style="color: #000000">Stored Location</span></td>
<td class="bold" style="background-color: #666666; color: #000000;">
Officer ID</span></td>
</tr>
<tr>
<td class="style32" style="background-color: #C0C0C0; width: 127px;">
<asp:DropDownList ID="exhibitTypeDropDownList" runat="server">
<asp:ListItem></asp:ListItem>
<asp:ListItem>Hard Disk</asp:ListItem>
<asp:ListItem>Pen Drive</asp:ListItem>
<asp:ListItem>Laptop</asp:ListItem>
<asp:ListItem>Palm Devce</asp:ListItem>
<asp:ListItem>Mobile Phone</asp:ListItem>
<asp:ListItem>Tablet PC</asp:ListItem>
<asp:ListItem>Pager</asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="exhibitTypeDropDownList"
ErrorMessage="Please Enter the type of exhibit. eg. Harddisk"
ForeColor="Red" ondisposed="addExhibitButton_Click">*</asp:RequiredFieldValidator>
</td>
<td class="style28" style="background-color: #C0C0C0; width: 228px;">
<asp:FileUpload ID="exhibitImageFileUpload" runat="server" />
</td>
<td class="style20" style="background-color: #C0C0C0; width: 111px;">
<asp:DropDownList ID="storedLocationDropDownList" runat="server">
<asp:ListItem></asp:ListItem>
<asp:ListItem>B-15/4</asp:ListItem>
<asp:ListItem>B-10/1</asp:ListItem>
<asp:ListItem>B-5/4</asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ControlToValidate="storedLocationDropDownList"
ErrorMessage="Please enter a valid stored location" ForeColor="Red"
ondisposed="addExhibitButton_Click">*</asp:RequiredFieldValidator>
</td>
<td class="style30" style="background-color: #C0C0C0">
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="officersSqlDataSource" DataTextField="PoliceID"
DataValueField="PoliceID" Width="79px" Height="26px">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
ControlToValidate="DropDownList1"
ErrorMessage="Please select a valid Officer id from the dropdown list"
ForeColor="Red" ondisposed="addExhibitButton_Click">*</asp:RequiredFieldValidator>
</td>
</tr>
</table>
</div>
<div style="width: 609px; height: 23px;">
</div>
<div style="margin-top:12px; width: 232px; text-align:left; font-size:1.3em;">
<asp:SqlDataSource ID="officersSqlDataSource"
runat="server"
ConnectionString="<%$ ConnectionStrings:CMSSQL3ConnectionString1 %>"
SelectCommand="SELECT PoliceID FROM PoliceOfficers"></asp:SqlDataSource>
<table align="left">
<tr>
<td align="center">
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ForeColor="Red"
HeaderText="The following errors occured." />
</td>
</tr>
</table>
</div>
<div style="margin-top:12px; width: 456px;">
<table style="width: 450px" align="left">
<tr>
<td align="center" colspan="3">
<asp:Label ID="messageLabel" runat="server" BackColor="White" ForeColor="Red"
Visible="False"></asp:Label>
</td>
</tr>
<tr>
<td align="center" style="width: 96px">
<asp:Button ID="cancelButton" runat="server" Text="Cancel"
onclick="cancelButton_Click" height="26px" width="101px" />
</td>
<td style="width: 237px">
</td>
<td align="center">
<asp:Button ID="addExhibitButton" runat="server" Text="Add Exhibit"
onclick="addExhibitButton_Click" />
</td>
</tr>
</table>
</div>
and the following interface look
I wish to perform validation on the page only when the "add exhibit button" is clicked. so in my code behind, i used an "if(page.isvalid)" to check for page validation when the button is clicked. However any other button i click fires the validation as well... I presume its because every button click tries to load a page and that calls the validator to action. how do i allow work around the validation such that, only the " add exhibit button" triggers the page validation?
You need to set the ValidationGroup property on the button and the validator. That way you can control what validation takes place.
The ValidationGroup property is an arbitrary tag that you can add to your validators and buttons to group them into logical units. So in your case, I would do this:
For your validators that are relevant for the add exhibit action.
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" ValidationGroup="AddExhibit" ...
For your button that triggers your add exhibit.
<asp:Button ID="addExhibitButton" ValidationGroup="AddExhibit"