ASP.NET VB Page_Load Only Once or Alternative - asp.net
I'm a little stuck on what to do! I have a special form that allows my customers to request a quote for a specific product (defined by PID in url) The form is loaded inside a modal dialogue and within that a Iframe. The Iframe's src value is set from the onclick event of ahref on the product pages eg;
<div id='basic-modal'><p><br /><br />CLICK ME</p></div>
<div id="basic-modal-content">
<iframe id="ifr" width="850px" height="600px" frameborder="0" scrolling="no"></iframe>
The form that I am loading does a SQL insert when Page_Load is fired. Also it is within
If Page.IsPostBack = False Then
For some strange reason the page is doing it twice when the page loads and another time when the page is closed.. I need the SQL insert on the first page load as the returned values are used by my form. Can anyone suggest a good way of making the code within Page_Load only fire up once?
Many thanks!
UPDATE, Full Code:
aspx page
<%# Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Public_Default" %>
<%# Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<link href="../quoteFront.css" rel="stylesheet" type="text/css" />
<title></title>
<style type="text/css">
.style1
{
width: 100%;
}
.style2
{
height: 26px;
}
.style5
{
width: 299px;
}
.style6
{
width: 174px;
}
.style7
{
height: 26px;
width: 174px;
}
.style8
{
width: 291px;
}
.style9
{
height: 26px;
width: 189px;
}
.style10
{
}
.style11
{
width: 189px;
}
.style12
{
width: 191px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnablePartialRendering="true" CombineScripts="false" >
</cc1:ToolkitScriptManager>
</div>
<asp:UpdatePanel ID="UpdatePanel3" runat="server"><ContentTemplate>
<asp:Panel ID="Panel2" runat="server">
<table class="style1">
<tr>
<td class="style12">
First name</td>
<td class="style5">
<asp:TextBox ID="txtFirstName" runat="server" Width="300px"
AutoCompleteType="FirstName"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="txtFirstName" ErrorMessage="* Required" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style12">
Last name</td>
<td class="style5">
<asp:TextBox ID="txtLastName" runat="server" Width="300px"
AutoCompleteType="LastName"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="txtLastName" ErrorMessage="* Required" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style12">
Company name</td>
<td class="style5">
<asp:TextBox ID="txtCompanyName" runat="server" Width="300px"
AutoCompleteType="Company"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td class="style12">
Email address</td>
<td class="style5">
<asp:TextBox ID="txtEmailAddress" runat="server" Width="300px" AutoCompleteType="Email"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
ControlToValidate="txtEmailAddress" ErrorMessage="* Required"
ForeColor="Red"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="txtEmailAddress" ErrorMessage=" * Invalid email address"
ForeColor="Red"
ValidationExpression="\w+([-+.']\w+)*#\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td class="style12">
Phone number</td>
<td class="style5">
<asp:TextBox ID="txtPhoneNumber" runat="server" Width="300px" AutoCompleteType="BusinessPhone"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server"
ControlToValidate="txtPhoneNumber" ErrorMessage="* Required"
ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
</table>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<div>
<table class="style1">
<tr>
<td class="style11">
Quantity required</td>
<td class="style6">
<asp:TextBox ID="txtQuantity1" runat="server" AutoPostBack="True"></asp:TextBox>
<cc1:FilteredTextBoxExtender ID="ftbe" runat="server" FilterType="Numbers"
TargetControlID="txtQuantity1" />
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server"
ControlToValidate="txtQuantity1"
ErrorMessage="* Please enter quantity required" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style11">
<asp:Label ID="lblDesigninfo" runat="server" Text="Printing info"></asp:Label>
</td>
<td class="style6">
<asp:DropDownList ID="drpDesignInfo1" runat="server" AutoPostBack="True"
DataSourceID="SqlDataSource1" DataTextField="PrintInfoDesc"
DataValueField="ID" AppendDataBoundItems="True">
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:quotingSystemConnectionString %>"
SelectCommand="SELECT [ID], [PrintInfoDesc] FROM [PrintInfo]">
</asp:SqlDataSource>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server"
ControlToValidate="drpDesignInfo1" ErrorMessage="* Please select"
ForeColor="Red"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style11">
<asp:Label ID="lblColoursSideOne1" runat="server"
Text="Colour options first side" Visible="True"></asp:Label>
</td>
<td class="style6">
<asp:DropDownList ID="drpColoursSideOne1" runat="server" Visible="True"
AutoPostBack="True">
</asp:DropDownList>
</td>
<td>
</td>
</tr>
<tr>
<td class="style9">
<asp:Label ID="lblColoursSideTwo1" runat="server"
Text="Colour options second side" Visible="false"></asp:Label>
</td>
<td class="style7">
<asp:DropDownList ID="drpColoursSideTwo1" runat="server" Visible="false">
</asp:DropDownList>
</td>
<td class="style2">
</td>
</tr>
</table>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtQuantity1" EventName="TextChanged" />
<asp:AsyncPostBackTrigger ControlID="drpDesignInfo1"
EventName="SelectedIndexChanged" />
<asp:AsyncPostBackTrigger ControlID="drpColoursSideOne1"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate>
<div style="text-align: center">Please fill in the above fields before uploading
artwork.
<br />
When the upload is complete you will get the option to upload additional
artwork.
<cc1:AsyncFileUpload ID="AsyncFileUpload1" runat="server"
CompleteBackColor="Lime" ErrorBackColor="Red"
OnClientUploadComplete="UploadComplete" OnClientUploadError="uploadError"
OnClientUploadStarted="StartUpload"
onuploadedcomplete="AsyncFileUpload1_UploadedComplete" ThrobberID="Throbber"
UploaderStyle="Modern" UploadingBackColor="#66CCFF" Width="100%"
ClientIDMode="Inherit" />
<asp:Label ID="Throbber" runat="server" Style="display: none">
<img src="../Images/indicator.gif" align="absmiddle" alt="loading" />
</asp:Label><asp:Label ID="lblStatus" runat="server"></asp:Label>
<br />
<div style="max-height:70px; overflow : auto; ">
<asp:Label ID="lblUploadList" runat="server" ForeColor="#006600"
Font-Size="Smaller"></asp:Label>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<table class="style1">
<tr>
<td class="style10">
Any aditional info<asp:TextBox ID="txtComments" runat="server" Height="111px"
TextMode="MultiLine" Width="100%"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style8">
<asp:Button ID="Button1" runat="server" Text="Send Request" Width="100%"
Height="45px" Font-Bold="False" />
</td>
</tr>
</table>
</asp:Panel>
<br />
<asp:Panel ID="Panel1" runat="server" Visible="False">
Thank you for requesting a quote. A member of our sales team will be in touch
shortly.<br />
<br />
<asp:Button ID="btnRequestAnother" runat="server"
Text="Request another quote for this product" CausesValidation="False"
Height="45px" Width="100%"/>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<script type="text/javascript" language="javascript">
function uploadError(sender, args) {
document.getElementById("lblStatus").innerHTML = "Failed to upload " + args.get_fileName() + ". Please try again. If problem persistes please email sales#thecleverbaggers.co.uk";
document.getElementById("Button1").innerHTML = 'Send Request';
}
function StartUpload(sender, args) {
document.getElementById("lblStatus").innerHTML = 'Uploading Started. Depending on your connection speed this can take a very long time. Please wait....';
document.getElementById("Button1").innerHTML = 'Uploading Started. Please Wait....';
}
function UploadComplete(sender, args) {
var filename = args.get_fileName();
var contentType = args.get_contentType();
var text = "Upload Complete, Press Select File to upload more. " //"Size of " + filename + " is " + args.get_length() + " bytes";
if (contentType.length > 0) {
text //+= " and content type is '" + contentType + "'.";
}
document.getElementById("lblStatus").innerHTML = text;
document.getElementById("lblUploadList").innerHTML = document.getElementById("lblUploadList").innerHTML + "<br />" + filename + " Uploaded Successfully";
document.getElementById("Button1").innerHTML = 'Send Request';
}
</script>
</form>
</body>
VB CODE:
Imports System.Data
Imports System.IO
Imports System.Data.SqlClient
Partial Class Public_Default
Inherits System.Web.UI.Page
Dim ArtworkID As Integer
Dim customerIDDecrypt As String
Public QuoteID As Integer
Dim UploadedFileList As String
Dim productID As String
'Shared IsFirstTime As Boolean = False
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
productID = Request.QueryString("PID")
customerIDDecrypt = "0"
'If Not Page.IsPostBack AndAlso Not IsFirstTime Then
If Not Page.IsPostBack Then
Try
Dim sql As String = "INSERT INTO [Quote] (Status, CreationDate, CreationTime, CustomerID, ProductID, IP)" & _
"VALUES (#Status, #CreationDate, #CreationTime, #CustomerID, #ProductID, #IP) SELECT SCOPE_IDENTITY()"
Using cn As New SqlConnection(ConfigurationManager.AppSettings("quotingSystemConnectionString")), _
cmd As New SqlCommand(sql, cn)
cmd.Parameters.Add("#Status", SqlDbType.NVarChar).Value = 1
cmd.Parameters.Add("#CreationDate", SqlDbType.Date).Value = Date.UtcNow.ToLocalTime
cmd.Parameters.Add("#CreationTime", SqlDbType.Time).Value = Date.UtcNow.ToLocalTime.TimeOfDay
cmd.Parameters.Add("#CustomerID", SqlDbType.Int).Value = customerIDDecrypt
cmd.Parameters.Add("#ProductID", SqlDbType.Int).Value = productID
cmd.Parameters.Add("#IP", SqlDbType.NVarChar).Value = CStr(Request.UserHostAddress())
cn.Open()
'//grab the ID of this insert.
QuoteID = Integer.Parse(cmd.ExecuteScalar().ToString())
cn.Close()
'IsFirstTime = True
End Using
Catch ex As Exception
'// do something with this error!
Response.Write(ex.Message)
End Try
End If
End Sub
Protected Sub txtQuantity1_TextChanged(sender As Object, e As System.EventArgs) Handles txtQuantity1.TextChanged
'//populate colours dependant on quantity
If txtQuantity1.Text > "" Then
If txtQuantity1.Text < "100" Then
'side one
drpColoursSideOne1.Items.Clear()
'drpColoursSideOne1.Enabled = True
drpColoursSideOne1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideOne1.Items.Add(New ListItem("More than one colour", "full"))
drpColoursSideOne1.Items.Add(New ListItem("I don't know!", "help"))
drpColoursSideOne1.Visible = True
'side two
drpColoursSideTwo1.Items.Clear()
'drpColoursSideTwo1.Enabled = True
drpColoursSideTwo1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideTwo1.Items.Add(New ListItem("More than one colour", "full"))
drpColoursSideTwo1.Items.Add(New ListItem("I don't know!", "help"))
drpColoursSideTwo1.Items.Add(New ListItem("na", "na"))
Else
'side one
drpColoursSideOne1.Items.Clear()
'drpColoursSideOne1.Enabled = True
drpColoursSideOne1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideOne1.Items.Add(New ListItem("Two colours", "2"))
drpColoursSideOne1.Items.Add(New ListItem("Three colours", "3"))
drpColoursSideOne1.Items.Add(New ListItem("Four colours", "4"))
drpColoursSideOne1.Items.Add(New ListItem("Five colours", "5"))
drpColoursSideOne1.Items.Add(New ListItem("Full colour (eg, photo)", "full"))
drpColoursSideOne1.Items.Add(New ListItem("I don't know!", "help"))
'side two
drpColoursSideTwo1.Items.Clear()
'drpColoursSideTwo1.Enabled = True
drpColoursSideTwo1.Items.Add(New ListItem("One colour", "1"))
drpColoursSideTwo1.Items.Add(New ListItem("Two colours", "2"))
drpColoursSideTwo1.Items.Add(New ListItem("Three colours", "3"))
drpColoursSideTwo1.Items.Add(New ListItem("Four colours", "4"))
drpColoursSideTwo1.Items.Add(New ListItem("Five colours", "5"))
drpColoursSideTwo1.Items.Add(New ListItem("Full colour (eg, photo)", "full"))
drpColoursSideTwo1.Items.Add(New ListItem("I don't know!", "help"))
drpColoursSideTwo1.Items.Add(New ListItem("na", "na"))
End If
Else
'nothing
End If
End Sub
Protected Sub drpDesignInfo1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles drpDesignInfo1.SelectedIndexChanged
If drpDesignInfo1.SelectedValue = "1" And txtQuantity1.Text > "0" Then
lblColoursSideTwo1.Visible = False
lblColoursSideOne1.Visible = True
drpColoursSideOne1.Visible = True
drpColoursSideOne1.Enabled = True
drpColoursSideTwo1.Visible = False
drpColoursSideTwo1.Enabled = False
drpColoursSideTwo1.SelectedValue = "na"
' drpColoursSideTwo1.Items.Remove(New ListItem("Same as the first side", "same"))
ElseIf drpDesignInfo1.SelectedValue = "3" And txtQuantity1.Text > "0" Then
lblColoursSideOne1.Visible = True
drpColoursSideOne1.Visible = True
drpColoursSideOne1.Enabled = True
lblColoursSideTwo1.Visible = True
drpColoursSideTwo1.Visible = True
drpColoursSideTwo1.Enabled = True
' drpColoursSideTwo1.Items.Remove(New ListItem("Same as the first side", "same"))
ElseIf drpDesignInfo1.SelectedValue = "2" And txtQuantity1.Text > "0" Then
lblColoursSideOne1.Visible = True
drpColoursSideOne1.Visible = True
drpColoursSideOne1.Enabled = True
lblColoursSideTwo1.Visible = True
drpColoursSideTwo1.Visible = True
drpColoursSideTwo1.Enabled = False
' Dim tmpCount2 = drpColoursSideTwo1.Items.Count
' If tmpCount2 = 7 Or tmpCount2 = 3 Then
'drpColoursSideTwo1.Items.Add(New ListItem("Same as the first side", "same"))
'End If
drpColoursSideTwo1.SelectedValue = drpColoursSideOne1.SelectedValue
End If
End Sub
Protected Sub AsyncFileUpload1_UploadedComplete(sender As Object, e As AjaxControlToolkit.AsyncFileUploadEventArgs)
System.Threading.Thread.Sleep(3000)
If AsyncFileUpload1.HasFile Then
'Dim strPath As String = newPath + Path.GetFileName(e.FileName)
'AsyncFileUpload1.SaveAs(strPath)
Dim fileName = Path.GetFileName(e.FileName)
'Dim imageBytes(AsyncFileUpload1.PostedFile.InputStream.Length) As Byte
'AsyncFileUpload1.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.length)
Dim imageBytes = AsyncFileUpload1.FileBytes
'AsyncFileUpload1.FileBytes
'// now insert this into the database
Try
Dim sql As String = "INSERT INTO [UploadedFiles] (CustomerID, FileName, FileSize, FileContent, FileType, FileUploadDate, QuoteID)" & _
"VALUES (#CustomerID, #FileName, #FileSize, #FileContent, #FileType, #FileUploadDate, #QuoteID) SELECT SCOPE_IDENTITY()"
Using cn As New SqlConnection(ConfigurationManager.AppSettings("quotingSystemConnectionStringLargeTimeout")), _
cmd As New SqlCommand(sql, cn)
cmd.CommandTimeout = "3600"
cmd.Parameters.Add("#CustomerID", SqlDbType.Int).Value = 1
cmd.Parameters.Add("#FileName", SqlDbType.NVarChar).Value = fileName
cmd.Parameters.Add("#FileSize", SqlDbType.NVarChar).Value = AsyncFileUpload1.PostedFile.ContentLength
cmd.Parameters.Add("#FileContent", SqlDbType.VarBinary).Value = imageBytes
cmd.Parameters.Add("#FileType", SqlDbType.NVarChar, 50).Value = AsyncFileUpload1.PostedFile.ContentType
cmd.Parameters.Add("#FileUploadDate", SqlDbType.Date).Value = Date.UtcNow.ToLocalTime
cmd.Parameters.Add("#QuoteID", SqlDbType.Int).Value = QuoteID
cn.Open()
'//grab the ID of this insert.
ArtworkID = Integer.Parse(cmd.ExecuteScalar().ToString())
cn.Close()
End Using
Catch ex As Exception
'// do something with this error!
Response.Write(ex.Message)
End Try
End If
End Sub
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
'// Populate the database with remaining information
Button1.Text = "Please Wait... Sending Request"
Dim thisConnection As New SqlConnection(ConfigurationManager.AppSettings("quotingSystemConnectionString"))
'Create Command object
Dim nonqueryCommand As SqlCommand = thisConnection.CreateCommand()
Try
' Open Connection
thisConnection.Open()
' 1. Create Command
' Sql Update Statement
Dim updateSql As String = "UPDATE Quote " & _
"SET Status = '2', FirstName = #FirstName, LastName = #LastName, CompanyName = #CompanyName, Email = #Email, Phone = #Phone, Quantity = #Quantity, DesignInfo = #DesignInfo, CS1 = #CS1, CS2 = #CS2, Comments = #Comments " & _
"WHERE QuoteID = " & QuoteID
Dim UpdateCmd As New SqlCommand(updateSql, thisConnection)
' 2. Map Parameters
'UpdateCmd.Parameters.Add("#Status", SqlDbType.Int, "Status")
UpdateCmd.Parameters.Add("#FirstName", SqlDbType.NVarChar, 100, "FirstName")
UpdateCmd.Parameters.Add("#LastName", SqlDbType.NVarChar, 100, "LastName")
UpdateCmd.Parameters.Add("#CompanyName", SqlDbType.NVarChar, 100, "CompanyName")
UpdateCmd.Parameters.Add("#Email", SqlDbType.NVarChar, 200, "Email")
UpdateCmd.Parameters.Add("#Phone", SqlDbType.NVarChar, 30, "Phone")
UpdateCmd.Parameters.Add("#Quantity", SqlDbType.Int, 20, "Quantity")
UpdateCmd.Parameters.Add("#DesignInfo", SqlDbType.NVarChar, 100, "DesignInfo")
UpdateCmd.Parameters.Add("#CS1", SqlDbType.NVarChar, 20, "CS1")
UpdateCmd.Parameters.Add("#CS2", SqlDbType.NVarChar, 20, "CS2")
UpdateCmd.Parameters.Add("#Comments", SqlDbType.NVarChar, 1000, "Comments")
''''''''''''''
'UpdateCmd.Parameters("#Status").Value = 2
UpdateCmd.Parameters("#FirstName").Value = txtFirstName.Text
UpdateCmd.Parameters("#LastName").Value = txtLastName.Text
UpdateCmd.Parameters("#CompanyName").Value = txtCompanyName.Text
UpdateCmd.Parameters("#Email").Value = txtEmailAddress.Text
UpdateCmd.Parameters("#Phone").Value = txtPhoneNumber.Text
UpdateCmd.Parameters("#Quantity").Value = txtQuantity1.Text
UpdateCmd.Parameters("#DesignInfo").Value = drpDesignInfo1.SelectedValue
UpdateCmd.Parameters("#CS1").Value = drpColoursSideOne1.SelectedValue
Dim CS2 As String
If drpDesignInfo1.SelectedValue = "1" Then
CS2 = "na"
Else
CS2 = drpColoursSideTwo1.SelectedValue
End If
UpdateCmd.Parameters("#CS2").Value = CS2
UpdateCmd.Parameters("#Comments").Value = txtComments.Text
'QuoteID
'''''''''''''''
UpdateCmd.ExecuteNonQuery()
Catch ex As SqlException
' Display error
Response.Write("FAIL: " & ex.Message)
Finally
' Close Connection
thisConnection.Close()
Panel1.Visible = True
Panel2.Visible = False
End Try
End Sub
Protected Sub btnRequestAnother_Click(sender As Object, e As System.EventArgs) Handles btnRequestAnother.Click
QuoteID = Nothing
Response.Redirect(Request.RawUrl)
Panel1.Visible = False
Panel2.Visible = True
'IsFirstTime = False
End Sub
Protected Sub drpColoursSideOne1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles drpColoursSideOne1.SelectedIndexChanged
If drpDesignInfo1.SelectedValue = "2" Then
drpColoursSideTwo1.SelectedValue = drpColoursSideOne1.SelectedValue
End If
End Sub
End Class
Please excuse my messy code...
you can do like this:
static bool IsFirstTime = false;
After this
if(!Page.IsPostBack && !IsFirstTime)
{
insertdata();
IsFirstTime = true;
}
insertdata() inserts data into database.
Related
When I selecting the combobox items its deleting or refreshing the attachments the file
I developed the compose message from email, I attaching the files then i have selecting the combo box item its deleting the attachment files. Here my ASP Code: <asp:UpdatePanel ID="updatepanel" runat="server"> <ContentTemplate> <tr> <td valign="top"> <asp:Label ID="lblfile_name" runat="server" CssClass="labels">Upload File</asp:Label> </td> <td> <div style="overflow-y: scroll; z-index: auto; height: 60px;"> <asp:FileUpload ID="FileUpload1" runat="server" CssClass="multi" Visible="true" /> </div> </td> </tr> </ContentTemplate> </asp:UpdatePanel> <tr> <td> <telerik:RadComboBox EmptyMessage="----- Select -----" ID="cboTemplate" runat="server" Skin="WebBlue" AutoPostBack="true"> </telerik:RadComboBox> </td> </tr> Here VB. NET CODE Private Sub cboTemplate_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboTemplate.SelectedIndexChanged If cboTemplate.SelectedValue = "--Select--" Then lblErrMsg.Text = objcmnfunctions.GetErrMsg("B2B_WAR_110") SetFocus(anc_err) Exit Sub End If objdbconn.OpenConn() msSQL = " Select mailtemplate_gid, template_name, template_content " & _ " from crm_trn_tmailtemplates " & _ " where mailtemplate_gid = '" & cboTemplate.SelectedValue & "'" objOdbcDataReader = objdbconn.GetDataReader(msSQL) If objOdbcDataReader.HasRows = True Then objOdbcDataReader.Read() radmailcontent.Content = objOdbcDataReader.Item("template_content").ToString End If objOdbcDataReader.Close() objdbconn.CloseConn() End Sub
Store the value of FileUpload1 to Session Object If Session("FileUpload1") Is Nothing AndAlso FileUpload1.HasFile Then Session("FileUpload1") = FileUpload1 ElseIf Session("FileUpload1") IsNot Nothing AndAlso (Not FileUpload1.HasFile) Then FileUpload1 = DirectCast(Session("FileUpload1"), FileUpload) ElseIf FileUpload1.HasFile Then Session("FileUpload1") = FileUpload1 End If The reason the dropdown is clearing the value from Upload is because it is set to AutoPostBack="true"
Image OnClick not firing but Button Event is
I have the html & Code below. When the user hits the page first I want them to be able to select their language by clicking on a Flag icon (before or after signing in). The event should fire and the language choice will be set. They then should be able to carry on logging into the site (if not already logged in) and performing whatever business they need. My problem is, however, whenever I click on any flag icon the login and/or password box error message is displayed (if the textbox is empty) even thought the Button Click is not fired. Can anyone please give me a pointer on where I am going wrong as I am obviously missing something (probably the obvious). Many thanks in advance for any assistance offered Regards Iain <form id="form1" runat="server"> <div style="position: absolute; right : 0px; right : 5%;"> <!-- The Language Icons --> <asp:ImageButton id = "imgbEnglish" runat = "server" onserverclick = "imgbEnglish_Click" ImageUrl = "~/images/Union Jack.jpg" Width = "20px" ToolTip = "English" visible = "true"/> .......... .......... .............................................. There are 9 image icons of the same definition .............................................. .......... .......... </div> <!-- The Language Icons --> <table align="center"> <tr> <td colspan="2" height="200px"></td> </tr> <tr> <td> </td> <td> <b> <asp:Label ID = "lblLoginBoxHeader" runat = "server" text = "Sign In"> </asp:Label> </b> </td> </tr> <tr> <td> <asp:Label ID = "lblUsername" runat = "server" text = "User Name"> </asp:Label> </td> <td> <asp:TextBox ID="txtUserName" runat="server"/> <asp:RequiredFieldValidator ID="rfvUser" ErrorMessage="Please enter a Username" ControlToValidate="txtUserName" runat="server" /> </td> </tr> <tr> <td> <asp:Label ID = "lblPassword" runat = "server" text = "Password"> </asp:Label> </td> <td> <asp:TextBox ID="txtPWD" runat="server" TextMode="Password"/> <asp:RequiredFieldValidator ID="rfvPWD" runat="server" ControlToValidate="txtPWD" ErrorMessage="Please enter a Password"/> </td> </tr> <tr> <td> </td> <td> <asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click" /> </td> </tr> <tr> <td> </td> <td> <asp:Label ID = "lblSignedIn" runat = "server" text = ""> </asp:Label> </td> </tr> </table> // The code behind is protected void Page_Load ( object sender, EventArgs e ) { if (!IsPostBack) { getTheLanguage(); lblSignedIn.Text = lblSignedIn + "<br />" + "Is Postback"; } else { lblSignedIn.Text = lblSignedIn + "<br />" + "Is Postback"; } } protected void imgbEnglish_Click ( object sender, ImageClickEventArgs e ) { Session["Language"] = "English"; lblCurrentLanguage.Text = "English"; } protected void btnSubmit_Click(object sender, EventArgs e) { OleDbConnection con = new OleDbConnection(odbcString); OleDbCommand cmd = new OleDbCommand(); string sqlString = "SELECT UPPER(VENCODE), UPPER(PASSWORD), COMPANY, QUALSITE, VENDSITE, CUSTSITE " + "FROM QUALITY.USERLIST " + "WHERE VENCODE = '" + txtUserName.Text.ToUpper() + "' AND " + "PASSWORD = '" + txtPWD.Text.ToUpper() + "' " + "ORDER BY VENCODE"; con.Open(); cmd.Connection = con; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlString; try { OleDbDataReader dsSite = cmd.ExecuteReader(); if (dsSite.HasRows) { lblSignedIn.Text = lblSignedIn + "<br />" + "Signed In"; } else { lblSignedIn.Text = lblSignedIn + "<br />" + "Sign In Failed"; } } catch { } con.Close(); }
Set CausesValidation="false" ... <asp:ImageButton id = "imgbEnglish" runat = "server" onserverclick = "imgbEnglish_Click" ImageUrl = "~/images/Union Jack.jpg" Width = "20px" CausesValidation="false" ToolTip = "English" visible = "true"/>
How to get the current values of RadGrid Columns
I am using the follwing code. in .aspx: function AccessOnclient() { debugger; var grid = $find("<%= dg_InvPat.ClientID %>"); if (grid) { var MasterTable = grid.get_masterTableView(); var sumtemp = 0; var Rows = MasterTable.get_dataItems(); for (var i = 0; i < Rows.length; i++) { var row = Rows[i]; var RadNumericTextBox1 = row.findControl("txt_projInv"); if (RadNumericTextBox1.get_value()) { sumtemp =sumtemp + RadNumericTextBox1.get_value(); } } for (var i = 0; i < Rows.length; i++) { var row = Rows[i]; var RadNumericTextBox1 = row.findControl("txt_projInv"); var valinv=RadNumericTextBox1.get_value(); var res=Math.round((valinv/sumtemp)*100); var revpat = MasterTable.get_dataItems()[i].findElement("lbl_revpat");//access the Label control revpat.innerText = res; } document.getElementById("ctl00_MainContent_b1").click(); } } <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server"> <div id="content"> <table class="table_Style" width="100%"> <tr> <td style="width: 15%"> <asp:Label ID="Label2" runat="server">Financial Year</asp:Label> </td> <td> <Telerik:RadComboBox AutoPostBack="true" runat="server" ID="ddl_year" Width="200px" MarkFirstMatch="true" CausesValidation="true" ValidationGroup="List"> </Telerik:RadComboBox> <asp:Button ID="cmd_go" runat="server" Text="View" CausesValidation="true" ValidationGroup="btnSubmit"></asp:Button> <asp:CompareValidator ID="cvyear" runat="server" ErrorMessage="Please Select Financial Year" ControlToValidate="ddl_year" ValueToCompare="Select" Operator="NotEqual" ValidationGroup="btnSubmit"></asp:CompareValidator> </td> </tr> </table> <table class="table_Style" width="100%"> <tr> <td> <Telerik:RadGrid ID="dg_InvPat" runat="server" AutoGenerateColumns="False" GridLines="None" HeaderStyle-VerticalAlign="Top" Width="100%" ShowStatusBar="True" AllowPaging="True" AllowSorting="false" AllowFilteringByColumn="False" PageSize="5"> <GroupingSettings CaseSensitive="false" /> <ExportSettings ExportOnlyData="true" OpenInNewWindow="True" IgnorePaging="true" FileName="InvPattern"> </ExportSettings> <MasterTableView CommandItemDisplay="None" CommandItemSettings-ShowRefreshButton="false" CommandItemSettings-ShowAddNewRecordButton="false"> <RowIndicatorColumn> <HeaderStyle Width="20px"></HeaderStyle> </RowIndicatorColumn> <ExpandCollapseColumn> <HeaderStyle Width="20px"></HeaderStyle> </ExpandCollapseColumn> <NoRecordsTemplate> <font color="red">No Records Available</font> </NoRecordsTemplate> <Columns> <Telerik:GridBoundColumn UniqueName="NOTIF1" DataField="NOTIF1" HeaderText="As Per Notification" Visible ="false" > </Telerik:GridBoundColumn> <Telerik:GridBoundColumn UniqueName="NOTIF" DataField="NOTIF" HeaderText="As Per Notification"> </Telerik:GridBoundColumn> <Telerik:GridBoundColumn UniqueName="CAT" DataField="CAT" HeaderText="Pattern Category"> </Telerik:GridBoundColumn> <Telerik:GridBoundColumn UniqueName="INVESTMENT" DataField="INVESTMENT" HeaderText="Act Investment"> </Telerik:GridBoundColumn> <Telerik:GridBoundColumn UniqueName="LIMITID" DataField="LIMITID" HeaderText="Limit Id" Visible="false"> </Telerik:GridBoundColumn> <Telerik:GridBoundColumn UniqueName="TRUSTPAT1" DataField="TRUSTPAT1" HeaderText="Trust Pattern" Visible="false"> </Telerik:GridBoundColumn> <Telerik:GridBoundColumn UniqueName="TRUSTPAT" DataField="TRUSTPAT" HeaderText="Trust Pattern"> </Telerik:GridBoundColumn> <Telerik:GridBoundColumn UniqueName="SHORTAGE" DataField="SHORTAGE" HeaderText="Shortfall/Excess"> </Telerik:GridBoundColumn> <Telerik:GridTemplateColumn HeaderText="Project Investment"> <ItemTemplate> <Telerik:RadNumericTextBox ID="txt_projInv" runat="server" EmptyMessage="" IncrementSettings-InterceptMouseWheel="false" SkinID="RadTextYellow" Type="Number" DataType="System.Int64" AutoPostBack="false" MaxLength="8" Text='<%# Bind("investment") %>'> <NumberFormat DecimalDigits="0" GroupSeparator="" /> <ClientEvents OnKeyPress="AccessOnclient" OnValueChanged="AccessOnclient"/> </Telerik:RadNumericTextBox> </ItemTemplate> </Telerik:GridTemplateColumn> <Telerik:GridTemplateColumn HeaderText="Revised Pattern"> <ItemTemplate> <asp:Label ID="lbl_revpat" runat="server" Text='<%# Bind("trustpat1") %>'></asp:Label> </ItemTemplate> </Telerik:GridTemplateColumn> </Columns> </MasterTableView> </Telerik:RadGrid> </td> </tr> <tr id="tr1"> <td colspan="2"> <table width="100%" border="0" > <tr> <td align="center"> <br/> <div id="divgraph1" runat="server" > <asp:Panel ID="pnlnum" runat="server" Width="100%" Visible="False" style="height:400px"> <asp:Literal ID="Literal1" runat="server"></asp:Literal> </asp:Panel> </div> </td> </tr> </table> </td> </tr> <tr> <td> <asp:Label ID="lblhead" runat="server" Font-Size="10" ForeColor="#000033" Font-Bold="True"></asp:Label> </td> <td align="right"> <asp:Label ID="lbltotal" runat="server" Font-Size="10" ForeColor="#000033"></asp:Label> </td> </tr> <tr> <td colspan="2"> <asp:Label Width="100%" ID="lblmess" SkinID="lblErr" runat="server"></asp:Label> </td> </tr> <tr> <td> <asp:Button id="b1" runat="server" /> </td> </tr> <tr> <td colspan="2"> <Telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" DecoratedControls="Default" Skin="Sunset" Style="margin-bottom: 0px" /> <Telerik:RadWindowManager ID="RadWindowManager2" ShowContentDuringLoad="false" VisibleStatusbar="false" ReloadOnShow="true" runat="server" Modal="true"> </Telerik:RadWindowManager> </td> </tr> </table> </div> </asp:Content> in .aspx.vb: #Region "Namespaces" Imports Telerik.Web.UI Imports System.Data Imports System.Net Imports System Imports System.IO Imports System.Text Imports System.Net.Mail Imports InfoSoftGlobal.InfoSoftGlobal #End Region Partial Class iv Inherits System.Web.UI.Page #Region "Declarations" Dim objEntry_ml As ClsPF_BE Dim objEntry_bll As ClsPF_BLL Dim ds As DataSet Dim objCom_ml As Common_ml Dim objCom_bll As Common_bll Dim UserSysId As Long Public UnitID As Integer Public UnitName As String Dim strXML As String #End Region #Region "PageEvents" Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init AddHandler Master.PageEvent, AddressOf Page_Load End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Master.UnitChange = True Then Response.Redirect("iv.aspx") End If Master.PageHeadingTitle = "Pattern" If Not Session("UserSysId") Is Nothing Then UnitID = Session("UnitId") UnitName = Session("UnitName") UserSysId = Session("UserSysId") Else Response.Redirect("Login.aspx?Status=S") End If If Not IsPostBack Then LoadYear() End If lblmess.Text = "" End Sub Protected Sub cmd_go_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmd_go.Click LoadGrid() Literal1.Text = DrawGraph() pnlnum.Visible = True divgraph1.Visible = True End Sub Private Sub LoadGrid() Dim ds As New DataSet Try objEntry_ml = New ClsPF_BE objEntry_bll = New ClsPF_BLL Dim sReturnMessage As String = "" objEntry_ml.FinYear_code = ddl_year.SelectedValue ds = objEntry_bll.bll_Invpattern(objEntry_ml, UserSysId, sReturnMessage) dg_InvPat.DataSource = ds dg_InvPat.DataBind() ds = Nothing If dg_InvPat.Items.Count > 1 Then lblmess.Visible = False divgraph1.Visible = True Else lblmess.Text = "No records found for the year" & ddl_year.Text lblmess.Visible = True End If Catch ex As Exception End Try End Sub Sub LoadYear() objEntry_ml = New ClsPF_BE objEntry_bll = New ClsPF_BLL ds = objEntry_bll.fillfinyear(objEntry_ml) ddl_year.DataSource = ds If ds.Tables(0).Rows.Count > 0 Then ddl_year.DataValueField = ds.Tables(0).Columns(0).Caption ddl_year.DataTextField = ds.Tables(0).Columns(1).Caption ddl_year.DataBind() If ddl_year.Items.Count > 0 Then ddl_year.Items.Insert(0, New RadComboBoxItem("Select", "")) End If End If objEntry_ml = Nothing objEntry_bll = Nothing ds = Nothing End Sub #End Region #Region "Functions" Public Function DrawGraph() As String Try Dim ds As DataSet Dim dv As DataView Dim dr As DataRowView Dim sReturnMessage As String = "" objEntry_ml = New ClsPF_BE objEntry_bll = New ClsPF_BLL strXML = "<chart palette='4' pieSliceDepth='30' pieRadius='120' CAPTION='Investment Pattern(In %)' bgcolor='#e5e5e5' outCnvBaseFont='verdana' outCnvBaseFontSize='11' showPercentageValues='1' bgAngle='360' showBorder='1' baseFont='Arial' baseFontSize='11' baseFontColor ='000000'>" For Each item As GridDataItem In dg_InvPat.Items Dim txt As Label = DirectCast(item.FindControl("lbl_revpat"), Label) Dim aa As String = txt.Text strXML = (strXML & ("<set label='" & (Server.HtmlEncode(item.Cells(4).Text) & ("' value='" & aa & "'/>")))) Next strXML = (strXML & "</chart>") Return FusionCharts.RenderChartHTML("FusionCharts/Charts/Pie3D.swf", "", Server.UrlEncode(strXML.ToString), "Percentage", "500", "350", False) Catch ex As Exception divgraph1.Visible = False lblmess.Text = "You have no rights to view this report" lblmess.ForeColor = Drawing.Color.Red lblhead.Text = "" lbltotal.Text = "" End Try End Function #End Region Protected Sub b1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles b1.Click Literal1.Text = DrawGraph() pnlnum.Visible = True divgraph1.Visible = True End Sub End Class Here when i chnge the textbox in templatecolumn in radgrid, the corresponding value is stored in the label(GridTemplateColumn of Radgrid). That is written in javascript. But the corresponding fusion chart is not shown. When i debug, the new values(calculated by javascript) are not taken into account. Only the values which is being bound in the grid will be plotted in the fusion chart. In DrawGraph() function i have used the label named as Revised pattern(GridTemplateColumn) value as <set label value. But the new value is not coming. Eg. if i give 600 in Project Investment column, the corresponding percentage 42 is coming in Revised pattern(GridTemplateColumn). But the fusion chart is not changed. How the problem can be solved? ANYONE PLEASE HELP ME.........
I suggest you to go for the textbox instead label Because textbox are server control and label have problem always getting values like if you are using update panel or so..... so textbox will be a best option to use
Listview with Search and DataPager controls
As this is my first project, I really do not have much idea to debug this. I have a listview. I am writing code manually to populate listview. As the listview is very large, I have a search button where user enters a search string. I am trying to build a sql string from here and populate the listview. Everything works fine but when I click on next page, it does not include the search string. I think it is just populating the 2nd page without the search criteria. If I remove the data pager control, it works fine. I am not able to put proper code datapger_PagePropertiesChanging. I appreciate if someone can help me with this. Here is my list view markup: <asp:ListView ID="lvContractors" runat="server" OnPagePropertiesChanging="lvContractors_PagePropertiesChanging"> <LayoutTemplate> <div class="ListViewGrid"> <table class="tblpadding"> <tr> <th class="HeaderStyle"> Contractor Number </th> <th class="HeaderStyle"> First Name </th> <th class="HeaderStyle"> Last Name </th> <th class="HeaderStyle"> View </th> <th class="HeaderStyle"> Edit </th> </tr> <tbody><asp:PlaceHolder runat="server" ID="itemPlaceholder" /></tbody> </table> </div> <!-- End of ListViewGrid --> </LayoutTemplate> <ItemSeparatorTemplate> <td> <hr /> </td> </ItemSeparatorTemplate> <ItemTemplate> <div > <tr> <td class="RowStyle"><%#Eval("ContractorNumber")%></td> <td class="RowStyle"><%#Eval("FirstName")%></td> <td class="RowStyle"><%#Eval("LastName")%></td> <td class="RowStyle"> <asp:HyperLink ID="lnkView" runat="server" CssClass="link" NavigateUrl='<%# "ContractorEdit.aspx?ID=" + Eval("ContractorNumber") + "&Mode=" + "CV" %>' Target="_blank" Text="View" /> </td> <td class="RowStyle"> <asp:HyperLink ID="lnkEdit" runat="server" CssClass="link" NavigateUrl= '<%# "ContractorEdit.aspx?ID=" + Eval("ContractorNumber") + "&Mode=" + "CE" %>' Text="Edit"> </asp:HyperLink> </tr> </div> </ItemTemplate> <AlternatingItemTemplate> <div> <tr> <td class="AlternatingRowStyle"><%#Eval("ContractorNumber")%></td> <td class="AlternatingRowStyle"><%#Eval("FirstName")%></td> <td class="AlternatingRowStyle"><%#Eval("LastName")%></td> <td class="AlternatingRowStyle"> <asp:HyperLink ID="lnkView" runat="server" CssClass="link" NavigateUrl='<%# "Contractor.aspx?ID=" + Eval("ContractorNumber")%>' Target="_blank" Text="View" /> </td> <td class="AlternatingRowStyle"> <asp:HyperLink ID="lnkEdit" runat="server" CssClass="link" NavigateUrl= '<%# "ContractorEdit.aspx?ID=" + Eval("ContractorNumber") + "&Mode=" + "CE" %>' Text="Edit"> </asp:HyperLink> </tr> </div> </AlternatingItemTemplate> <ItemSeparatorTemplate> <tr> <td colspan="5" class="itemseparator"></td> </tr> </ItemSeparatorTemplate> </asp:ListView> <div class="pager"> <asp:DataPager PageSize="20" ID="DataPagerContractor" runat="server" PagedControlID="lvContractors" NextPreviousButtonCssClass="PrevNext" CurrentPageLabelCssClass="CurrentPage" NumericButtonCssClass="PageNumber"> <fields> <asp:NumericPagerField PreviousPageText="< Prev" NextPageText="Next >" ButtonCount="10" NextPreviousButtonCssClass="PrevNext" CurrentPageLabelCssClass="CurrentPage" NumericButtonCssClass="PageNumber" /> </fields> </asp:DataPager> </div> </div> Code behind this: Partial Class Contractor Inherits System.Web.UI.Page Private txtKeywordSearchWhereClause As String = "" Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then Session("Clicked") = "Contractor" End If If Not DBNull.Value.Equals(txtKeywordSearchWhereClause) Then LoadContractors(txtKeywordSearchWhereClause) Else LoadContractors("") End If End Sub Private Sub LoadContractors(ByVal strSearch As String) Dim strConn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("Conn").ConnectionString) strConn.Open() Dim sql As String = "SELECT * FROM tblContractor1" If Not strSearch = "" Then sql = sql & strSearch sql = sql & " ORDER BY LastName" End If Dim da As SqlDataAdapter = New SqlDataAdapter(sql, strConn) Dim dt As DataTable = New DataTable() da.Fill(dt) lvContractors.DataSource = dt lvContractors.DataBind() End Sub Protected Sub buttonAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles buttonAdd.Click Response.Redirect("ContractorEdit.aspx", False) End Sub Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click ' Keyword Search Dim txtKeywordSearch As String = txtSearch.Text Dim txtWhereClause As String = "" If txtKeywordSearch.Trim() <> "" Then txtWhereClause = " WHERE FirstName LIKE '%" + txtKeywordSearch + "%'" txtWhereClause = txtWhereClause + " OR LastName LIKE '%" + txtKeywordSearch + "%'" txtWhereClause = txtWhereClause + " OR ContractorNumber LIKE '%" + txtKeywordSearch + "%'" txtKeywordSearchWhereClause = txtWhereClause End If LoadContractors(txtKeywordSearchWhereClause) End Sub Protected Sub lvContractors_PagePropertiesChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.PagePropertiesChangingEventArgs) Handles lvContractors.PagePropertiesChanging DataPagerContractor.SetPageProperties(e.StartRowIndex, e.MaximumRows, False) 'rebind List View If Not DBNull.Value.Equals(txtKeywordSearchWhereClause) Then LoadContractors(txtKeywordSearchWhereClause) Else LoadContractors("") End If End Sub End Class
Sorry to say, but this is not possible with the datapager (at least in ASP.Net 3.5). The only solution is to write your own pager from scratch as the only querystring parameter the datapager can pass is the page number.
Custom Paging in Child (Inner) Nested Repeaters
I am using nested repeaters with Dataset (not using Datatable) to retrieve information by passing parameters. So far I have bind the two repeaters clearly and everything is working fine. Here the list of messages created by each user datawise(parameter passed) will be displayed, and there could be more than 50 messages created by each user daily. So now I want to do custom paging for each user. But I am unable to proceed further, as the next, previous, back, first links are placed inside the child repeaters footer template and I couldn't access these links even by findcontrol method. Example: User1 No Msg Code 1 abcd Cl-6 2 some Cl-4 3 swedf Cl-3 4 sddf Cl-1 1,2,3,4,5 (Paging) User2 No Msg Code 1 dgfv Cl-96 2 abcd Cl-4 3 sjuc Cl-31 4 liot Cl-1 1,2,3,4,5 (Paging) In this ways goes for every user: Public Sub CreateNestedRepeater() Dim strSql_1 As String, strsql_2 As String Dim strCon_1 As New SqlConnection Dim strCon_2 As New SqlConnection Dim ds As New DataSet() frmDate = AMS.convertmmddyy(txtFromDate.Text) toDate = AMS.convertmmddyy(txtToDate.Text) strCon_1 = New SqlConnection(ConfigurationManager.ConnectionStrings("connectionString").ConnectionString) strSql_1 = "select User_Login, User_Id from V_mst_UserMaster Where User_Flag = 1 and User_Type='CO'" Dim daCust As New SqlDataAdapter(strSql_1, strCon_1) daCust.Fill(ds, "RptCoord_Name") WhereClause1 = "where MsgHdr_Id NOT IN (Select a.MsgHdr_Id from V_AMS_GetSentMsg as a Join V_AMS_GetSentMsg as b " _ & "on a.MsgHdr_Id = b.MsgHdr_PrevMsgId) and MsgHdr_Date >= '" & frmDate & "' and MsgHdr_Date <= '" & toDate & _ "'AND MsgHdr_MsgFlag='I' and MsgHdr_AckReq <> 'N'" OrderBy = "order by MsgHdr_Date asc" strCon_2 = New SqlConnection(ConfigurationManager.ConnectionStrings("conn_Ind_AKK_TRAN").ConnectionString) strsql_2 = "select User_Login,MsgHdr_Date, Client_Code, MsgHdr_RefNo, MsgType_Name, MsgHdr_Subject " _ & " from V_AMS_GetSentMsg " & WhereClause1 & OrderBy Dim daOrders As New SqlDataAdapter(strsql_2, strCon_2) daOrders.Fill(ds, "RptCd_Record") Dim rel As New DataRelation("CrdRelation", ds.Tables("RptCoord_Name").Columns("User_Login"), ds.Tables("RptCd_Record").Columns("User_Login"), False) ds.Relations.Add(rel) rel.Nested = True Rep1.DataSource = ds.Tables("RptCoord_Name").DefaultView Rep1.DataBind() strCon_1.Close() strCon_2.Close() End Sub Protected Sub Rep1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles Rep1.ItemCommand If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then DirectCast(e.Item.FindControl("Rep2"), Repeater).DataSource = DirectCast(e.Item.DataItem, DataRowView).CreateChildView("CrdRelation") DirectCast(e.Item.FindControl("Rep2"), Repeater).DataBind() End If End Sub Protected Sub Pagging(ByVal index As Integer) Dim PDS As New PagedDataSource PDS.DataSource = ds.Tables("RptCoord_Name").DefaultView PDS.CurrentPageIndex = index PDS.AllowPaging = True PDS.PageSize = 4 Dim rep2 As Repeater = CType(e rep2.DataSource = PDS Rep2.DataBind() Dim ddl As DropDownList = DirectCast(rep2.Controls(rep2.Controls.Count - 1).FindControl("PageCount"), DropDownList) If ddl IsNot Nothing Then For i As Integer = 1 To PDS.PageCount - 1 ddl.Items.Add(i.ToString()) Next End If End Sub Public Sub PageIndex(ByVal sender As Object, ByVal e As EventArgs) Dim ddl As DropDownList = DirectCast(rep2.Controls(rep2.Controls.Count - 1).FindControl("PageCount"), DropDownList) Pagging(Integer.Parse(ddl.SelectedItem.Text) - 1) End Sub XML: <asp:Repeater id="Rep1" runat="server" OnItemCommand="Rep1_ItemCommand" EnableViewState = "false" > <ItemTemplate> <table width="100%" border="0.8" cellpadding="0" cellspacing="0" CssClass="bodytext" > <tr><td align="center" class="RepHeader" > Incoming Messages - Pending Ack for <%#getUser(DataBinder.Eval(Container.DataItem, "User_Login"))%> from <%= txtFromDate.Text %> to <%=txtToDate.Text%> <%-- OnItemDataBound="Rep2_ItemDataBound" --%> <asp:Repeater id="Rep2" runat="server" datasource='<%#(Container.DataItem).Row.GetChildRows("CrdRelation") %>' > <HeaderTemplate> <table border="1" width="100%" > <tr class="RepHeader" > <td>Msg Date</td><td>CL Code</td><td>INCRefNo</td><td>Contents</td><td>Subject</td></tr></HeaderTemplate><ItemTemplate> <tr class="RrpList"> <td><%#getdate(CType(Container.DataItem, System.Data.DataRow)("MsgHdr_Date"))%> </td> <td><%#CType(Container.DataItem, System.Data.DataRow)("Client_Code")%> </td> <td><asp:LinkButton ID="lnkRef" runat="server"></asp:LinkButton> <a id="hrefRefNo" runat="server" href="#" class="Link" > <%#CType(Container.DataItem, System.Data.DataRow)("MsgHdr_RefNo")%></a></td> <td><%#CType(Container.DataItem, System.Data.DataRow)("MsgType_Name")%> </td> <td><%#CType(Container.DataItem, System.Data.DataRow)("MsgHdr_Subject")%> </td> </tr> </ItemTemplate> <FooterTemplate> <%--Starts Here - (Paging for Pending Nested Repeaters) --%> <tr align="center" class = "RepHeader"> <td colspan="5"> <asp:LinkButton ID="lnkFirst" runat="server" ForeColor="Black" Text="First" > </asp:LinkButton> <asp:LinkButton ID="lnkPrevious" runat="server" ForeColor="Black" Text="Previous" > </asp:LinkButton> Now Showing Page <asp:DropDownList ID="ddlpageNumbers" runat="server" AutoPostBack="true" > </asp:DropDownList> of <asp:Label ID="lblTotalPages" runat="server"> </asp:Label> Pages. <asp:LinkButton ID="lnkNext" runat="server" ForeColor="Black" Text="Next" > </asp:LinkButton> <asp:LinkButton ID="lnkLast" runat="server" ForeColor="Black" Text="Last" > </asp:LinkButton> </td> </tr> <%--Ends Here (Paging for Pending Nested Repeaters)--%> </td></tr> <br /> </table> </FooterTemplate> </asp:Repeater> </ItemTemplate> <SeparatorTemplate><br /><br /></SeparatorTemplate> </asp:Repeater> I couldn't understand how to do paging.
You shroud read about it: http://idunno.org/archive/2004/10/30/145.aspx http://support.microsoft.com/kb/306154