dude9er
06-22-2009, 09:50 PM
I am trying to submit a form generated in my Repeater. There are required field validators in my form and because the form is being regenerated through the repeater, when the 1st form is submitted the onclick event is validating all the forms and fields on the page within the repeater.
For example, the first field's ID in form 1 in the repeater is rendered like this:
fname textbox id = ctl00_ContentPlaceHolder1_Repeater1_ctl01_fname
The 1st field's ID in form 2 in the repeater is rendered like this:
fname textbox id = ctl00_ContentPlaceHolder1_Repeater1_ctl02_fname
I need the validators to view them as separate fields to validate, but still submit the data to "fname" in the DB.
Any ideas? Here is my code:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim Button1 As Button = DirectCast(sender, Button)
Dim Repeater1 As Repeater = DirectCast(Button1.Parent, Repeater)
'now you can use this rpt to find any control inside it
'For example
Dim hotelName As TextBox = DirectCast(Repeater1.FindControl("hotelName"), TextBox)
Dim hotelId As TextBox = DirectCast(Repeater1.FindControl("hotelId"), TextBox)
Dim fname As TextBox = DirectCast(Repeater1.FindControl("fname"), TextBox)
Dim lname As TextBox = DirectCast(Repeater1.FindControl("lname"), TextBox)
Dim emailAdr As TextBox = DirectCast(Repeater1.FindControl("emailAdr"), TextBox)
Dim numRm As TextBox = DirectCast(Repeater1.FindControl("numRm"), TextBox)
Dim inDate As TextBox = DirectCast(Repeater1.FindControl("inDate"), TextBox)
Dim outDate As TextBox = DirectCast(Repeater1.FindControl("outDate"), TextBox)
Dim lblResponse As Label = DirectCast(Repeater1.FindControl("lblResponse"), Label)
'Dim Confirmation As String = GenerateHash(associationName.Text & Now.ToString)
Dim tCon As SqlConnection = New SqlConnection(WebConfigurationManager.ConnectionStrings("bestvenues").ConnectionString)
tCon.Open()
Dim tCmd As SqlCommand = New SqlCommand
tCmd = New SqlCommand()
With tCmd
.Connection = tCon
.CommandType = Data.CommandType.Text
.CommandText = "INSERT INTO rebaterequest (hotelName, hotelId, fname, lname, emailAdr, numRm, inDate, outDate) VALUES('" & hotelName.Text() & "', '" & hotelId.Text() & "', '" & fname.Text & "', '" & lname.Text & "', '" & emailAdr.Text & "', '" & numRm.Text & "', '" & inDate.Text & "', '" & outDate.Text & "')"
.ExecuteNonQuery()
End With
tCon.Close()
Repeater Code:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ResultsObjectDataSource1">
<HeaderTemplate>
<table width="525" border="0" cellspacing="2" cellpadding="4">
</HeaderTemplate>
<ItemTemplate>
<!-- Begin Request Form -->
<table width="100%" border="0" cellpadding="0" cellspacing="3" bgcolor="#F5F5F5" id="<%#Container.DataItem("id")%>" style="width: 320px; height:auto; border: 3px double #E2E0D4; display:none">
<tr>
<td align="center" colspan="3" id="hotelInfoRequest">
<div class="hotelInfoRequestDiv">
<strong class="mainTxtsmRed">REQUEST HOTEL REBATE FOR</strong>
<br>
<strong><%#Container.DataItem("hotelName")%></strong>
<br>
</div> </td>
</tr>
<tr>
<td align="center" colspan="3">
<asp:Label ID="lblResponse" runat="server" Display="Dynamic" CssClass="formResponse" ></asp:Label></td>
</tr>
<tr>
<td width="140" align="right"><strong>Hotel: </strong></td>
<td width="100" ><asp:TextBox name="hotelName" Text='<%#Container.DataItem("hotelName")%>' type="text" class="txtBoxSm" id="hotelName" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td width="140" align="right"><strong>First Name: </strong></td>
<td width="100" ><asp:TextBox name="fname" type="text" class="txtBoxSm" id="fname" runat="server" onfocus=""></asp:TextBox></td>
<td width="15"><asp:RequiredFieldValidator ID="RequiredFieldFName" runat="server"
ErrorMessage="Oops" ControlToValidate="fname">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td align="right"><strong>Last Name: </strong></td>
<td ><asp:TextBox name="lname" type="text" class="txtBoxSm" id="lname" runat="server"></asp:TextBox></td>
<td >
<asp:RequiredFieldValidator ID="RequiredFieldLName" runat="server"
ErrorMessage="Oops" ControlToValidate="lname">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td align="right"><strong>Email:</strong></td>
<td ><asp:TextBox name="emailAdr" type="text" class="txtBoxSm" id="emailAdr" runat="server" AutoComplete="off"></asp:TextBox></td>
<td ><asp:RequiredFieldValidator ID="RequiredFieldEmail" runat="server"
ErrorMessage="Oops" ControlToValidate="emailAdr" Display="Dynamic">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator runat="server" id="validEmailRegExp" ControlToValidate="emailAdr"
ValidationExpression="^[\w-]+@[\w-]+\.(com|net|org|edu|mil|ca|info|mobi|tv|biz|name|us|ws|jobs)$" Display="Dynamic"><img
src="images/form/removeX.gif"></asp:RegularExpressionValidator> </td>
</tr>
<tr>
<td align="right"><strong>Number of Rooms:</strong></td>
<td ><asp:TextBox name="numRm" type="text" class="txtBoxSm" id="numRm" runat="server" AutoComplete="off"></asp:TextBox></td>
<td ><asp:RequiredFieldValidator ID="RequiredFieldNumRoom" runat="server"
ErrorMessage="Oops" ControlToValidate="numRm">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td align="right"><strong>Check-in Date:</strong> </td>
<td ><asp:TextBox name="inDate" type="text" class="txtBoxSm" id="inDate" runat="server" AutoComplete="off"></asp:TextBox></td>
<td >
<asp:RequiredFieldValidator ID="RequiredFieldInDate" runat="server"
ErrorMessage="Oops" ControlToValidate="inDate">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td align="right"><strong>Check-out Date:</strong></td>
<td ><asp:TextBox name="outDate" type="text" class="txtBoxSm" id="outDate" runat="server" AutoComplete="off"></asp:TextBox></td>
<td ><asp:RequiredFieldValidator ID="RequiredFieldOutDate" runat="server"
ErrorMessage="Oops" ControlToValidate="outDate">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td colspan="3" align="center">
<asp:Button ID="Button1" runat="server" Text="Submit Rebate Request" onclick="Button1_Click" />
<br />
<br />
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:bestvenues %>"
SelectCommand="SELECT * FROM [hotelinventory]"></asp:SqlDataSource>
</td>
</tr>
</table>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
button code is:
<asp:Button ID="Button1" runat="server" Text="Submit Rebate Request" onclick="Button1_click" />
For example, the first field's ID in form 1 in the repeater is rendered like this:
fname textbox id = ctl00_ContentPlaceHolder1_Repeater1_ctl01_fname
The 1st field's ID in form 2 in the repeater is rendered like this:
fname textbox id = ctl00_ContentPlaceHolder1_Repeater1_ctl02_fname
I need the validators to view them as separate fields to validate, but still submit the data to "fname" in the DB.
Any ideas? Here is my code:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim Button1 As Button = DirectCast(sender, Button)
Dim Repeater1 As Repeater = DirectCast(Button1.Parent, Repeater)
'now you can use this rpt to find any control inside it
'For example
Dim hotelName As TextBox = DirectCast(Repeater1.FindControl("hotelName"), TextBox)
Dim hotelId As TextBox = DirectCast(Repeater1.FindControl("hotelId"), TextBox)
Dim fname As TextBox = DirectCast(Repeater1.FindControl("fname"), TextBox)
Dim lname As TextBox = DirectCast(Repeater1.FindControl("lname"), TextBox)
Dim emailAdr As TextBox = DirectCast(Repeater1.FindControl("emailAdr"), TextBox)
Dim numRm As TextBox = DirectCast(Repeater1.FindControl("numRm"), TextBox)
Dim inDate As TextBox = DirectCast(Repeater1.FindControl("inDate"), TextBox)
Dim outDate As TextBox = DirectCast(Repeater1.FindControl("outDate"), TextBox)
Dim lblResponse As Label = DirectCast(Repeater1.FindControl("lblResponse"), Label)
'Dim Confirmation As String = GenerateHash(associationName.Text & Now.ToString)
Dim tCon As SqlConnection = New SqlConnection(WebConfigurationManager.ConnectionStrings("bestvenues").ConnectionString)
tCon.Open()
Dim tCmd As SqlCommand = New SqlCommand
tCmd = New SqlCommand()
With tCmd
.Connection = tCon
.CommandType = Data.CommandType.Text
.CommandText = "INSERT INTO rebaterequest (hotelName, hotelId, fname, lname, emailAdr, numRm, inDate, outDate) VALUES('" & hotelName.Text() & "', '" & hotelId.Text() & "', '" & fname.Text & "', '" & lname.Text & "', '" & emailAdr.Text & "', '" & numRm.Text & "', '" & inDate.Text & "', '" & outDate.Text & "')"
.ExecuteNonQuery()
End With
tCon.Close()
Repeater Code:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ResultsObjectDataSource1">
<HeaderTemplate>
<table width="525" border="0" cellspacing="2" cellpadding="4">
</HeaderTemplate>
<ItemTemplate>
<!-- Begin Request Form -->
<table width="100%" border="0" cellpadding="0" cellspacing="3" bgcolor="#F5F5F5" id="<%#Container.DataItem("id")%>" style="width: 320px; height:auto; border: 3px double #E2E0D4; display:none">
<tr>
<td align="center" colspan="3" id="hotelInfoRequest">
<div class="hotelInfoRequestDiv">
<strong class="mainTxtsmRed">REQUEST HOTEL REBATE FOR</strong>
<br>
<strong><%#Container.DataItem("hotelName")%></strong>
<br>
</div> </td>
</tr>
<tr>
<td align="center" colspan="3">
<asp:Label ID="lblResponse" runat="server" Display="Dynamic" CssClass="formResponse" ></asp:Label></td>
</tr>
<tr>
<td width="140" align="right"><strong>Hotel: </strong></td>
<td width="100" ><asp:TextBox name="hotelName" Text='<%#Container.DataItem("hotelName")%>' type="text" class="txtBoxSm" id="hotelName" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td width="140" align="right"><strong>First Name: </strong></td>
<td width="100" ><asp:TextBox name="fname" type="text" class="txtBoxSm" id="fname" runat="server" onfocus=""></asp:TextBox></td>
<td width="15"><asp:RequiredFieldValidator ID="RequiredFieldFName" runat="server"
ErrorMessage="Oops" ControlToValidate="fname">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td align="right"><strong>Last Name: </strong></td>
<td ><asp:TextBox name="lname" type="text" class="txtBoxSm" id="lname" runat="server"></asp:TextBox></td>
<td >
<asp:RequiredFieldValidator ID="RequiredFieldLName" runat="server"
ErrorMessage="Oops" ControlToValidate="lname">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td align="right"><strong>Email:</strong></td>
<td ><asp:TextBox name="emailAdr" type="text" class="txtBoxSm" id="emailAdr" runat="server" AutoComplete="off"></asp:TextBox></td>
<td ><asp:RequiredFieldValidator ID="RequiredFieldEmail" runat="server"
ErrorMessage="Oops" ControlToValidate="emailAdr" Display="Dynamic">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator runat="server" id="validEmailRegExp" ControlToValidate="emailAdr"
ValidationExpression="^[\w-]+@[\w-]+\.(com|net|org|edu|mil|ca|info|mobi|tv|biz|name|us|ws|jobs)$" Display="Dynamic"><img
src="images/form/removeX.gif"></asp:RegularExpressionValidator> </td>
</tr>
<tr>
<td align="right"><strong>Number of Rooms:</strong></td>
<td ><asp:TextBox name="numRm" type="text" class="txtBoxSm" id="numRm" runat="server" AutoComplete="off"></asp:TextBox></td>
<td ><asp:RequiredFieldValidator ID="RequiredFieldNumRoom" runat="server"
ErrorMessage="Oops" ControlToValidate="numRm">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td align="right"><strong>Check-in Date:</strong> </td>
<td ><asp:TextBox name="inDate" type="text" class="txtBoxSm" id="inDate" runat="server" AutoComplete="off"></asp:TextBox></td>
<td >
<asp:RequiredFieldValidator ID="RequiredFieldInDate" runat="server"
ErrorMessage="Oops" ControlToValidate="inDate">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td align="right"><strong>Check-out Date:</strong></td>
<td ><asp:TextBox name="outDate" type="text" class="txtBoxSm" id="outDate" runat="server" AutoComplete="off"></asp:TextBox></td>
<td ><asp:RequiredFieldValidator ID="RequiredFieldOutDate" runat="server"
ErrorMessage="Oops" ControlToValidate="outDate">
<img src="images/form/removeX.gif" style="width: 12px; height: 12px" /></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td colspan="3" align="center">
<asp:Button ID="Button1" runat="server" Text="Submit Rebate Request" onclick="Button1_Click" />
<br />
<br />
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:bestvenues %>"
SelectCommand="SELECT * FROM [hotelinventory]"></asp:SqlDataSource>
</td>
</tr>
</table>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
button code is:
<asp:Button ID="Button1" runat="server" Text="Submit Rebate Request" onclick="Button1_click" />