Display TXT file in Textbox (Multiline)

Need HELP to complete the following task: To display a  TXT file in multiline textbox (THIS IS DONE - See attached code), however now if text file is large (over 100 lines) I need to divide the file into pages, then show each page.  

SEE IMAGE for description and my code is attached. Again, I need help to complete the pages task.
 APPROX LAYOUT. See attached code - Default.aspx
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
	 	<!-- begin form table -->
		<table width="600" cellpadding="4" cellspacing="0" border="0">
		
		<tr>
		<td colspan="2" class="formTitle">File Content:<br />
		<table width="320" cellpadding="1" cellspacing="0">
		<tr>
			<td><asp:Button ID="btnTop" Text=" Top " runat="server" /></td>
			<td><asp:Button ID="btnPrevPage" Text="< Previous" runat="server" /></td>
			<td><asp:Button ID="btnNextPage" Text="Next >" runat="server" /> </td>
		</tr>
		</table>
		<asp:TextBox ID="txtFileContent" runat="server" Width="600" 
				Height="260" TextMode="MultiLine" ></asp:TextBox></td>
	</tr>
	</table>
    </div>
    </form>
</body>
</html>

Open in new window

Imports System.IO


Partial Public Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        txtFileContent.Text = GetContent("C:\TXTdir\sample_file.txt")
    End Sub
    Private Function GetContent(ByVal Path As String) As String
        Dim finalResult As String = String.Empty
        Dim maxLine As Integer = 15
        Dim reader As StreamReader = Nothing
        Dim line As String = String.Empty
        Dim sb As New StringBuilder()

        Try
            reader = GetFile(Path)
            If Not reader Is Nothing Then
                While (ReadLineValue(line, reader.ReadLine())) IsNot Nothing
                    sb.Append(line & vbCrLf)
                End While
                finalResult = sb.ToString()
                reader.Close()
                reader.Dispose()

            End If
        Catch ex As Exception
            ClientScript.RegisterStartupScript(Me.GetType, "", "<script language='javascript'>alert('" & ex.Message & "');</script>")
        End Try
        Return finalResult

    End Function
    Protected Sub btnNextPage_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnNextPage.Click

    End Sub

    Protected Sub btnPrevPage_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnPrevPage.Click

    End Sub

    Protected Sub btnTop_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnTop.Click

    End Sub
    Public Function GetFile(ByVal Path As String) As StreamReader
        Dim fileReader As StreamReader = Nothing

        If File.Exists(Path) Then
            Dim input As New FileStream(Path, FileMode.Open)
            fileReader = New StreamReader(input)
        End If
        Return fileReader
    End Function

    Public Shared Function ReadLineValue(Of T)(ByRef target As T, ByVal value As T) As T
        target = value
        Return value
    End Function
End Class

Open in new window

LVL 1
smanoAsked:
Who is Participating?
 
Jesus RodriguezConnect With a Mentor IT ManagerCommented:
Here is your code my friend. I'm assuming that the text file alwasy will have more than 15 line if not you need to do a small variation.
Imports System.IO
Partial Class Default8
    Inherits System.Web.UI.Page
    Public I As Integer = 1
    Public finalResult(1000) As String
    Private StartPgCounter As New Integer
    Private EndPgCounter As New Integer


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            btnNextPage.Enabled = False
            btnPrevPage.Enabled = False

            Session.Add("AmountofLines", GetContent("d:\sample.txt"))
            If Session("AmountofLines") > 15 Then
                btnNextPage.Enabled = True
                Dim k As Integer
                For k = 1 To 15
                    Me.txtFileContent.Text += Session("finalResult" & k) & vbCrLf
                Next
                Session.Add("StartPgCounter", 1)
                Session.Add("EndPgCounter", 15)
            Else
                btnNextPage.Enabled = False
            End If
        Else
        End If
    End Sub
    Public Function GetContent(ByVal Path As String) As Integer
        Try
            Dim oRead As System.IO.StreamReader
            oRead = File.OpenText(Path)
            While oRead.Peek <> -1
                Session.Add("finalResult" & I, oRead.ReadLine())
                I += 1
            End While
            oRead.Close()

        Catch ex As Exception
            ClientScript.RegisterStartupScript(Me.GetType, "", "<script language='javascript'>alert('" & ex.Message & "');</script>")
        End Try
        Return I
    End Function
    

    Protected Sub btnNextPage_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNextPage.Click
        Me.Session("StartPgCounter") = Me.Session("EndPgCounter") + 1
        If Me.Session("StartPgCounter") > Session("AmountofLines") Then
            Me.Session("StartPgCounter") = Session("AmountofLines")
            btnNextPage.Enabled = False
        Else
            btnNextPage.Enabled = True
        End If
        Session("EndPgCounter") = Session("StartPgCounter") + 15
        If Me.Session("EndPgCounter") > Session("AmountofLines") Then
            Me.Session("EndPgCounter") = Session("AmountofLines")
            btnNextPage.Enabled = False
        Else
            btnPrevPage.Enabled = True
        End If
        Dim k As Integer
        Me.txtFileContent.Text = ""
        For k = Me.Session("StartPgCounter") To Me.Session("EndPgCounter")
            Me.txtFileContent.Text += Session("finalResult" & k) & vbCrLf
        Next

        If Me.Session("EndPgCounter") = Session("AmountofLines") Then
            btnNextPage.Enabled = False
        End If
    End Sub

    Protected Sub btnPrevPage_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrevPage.Click
        Me.Session("StartPgCounter") = Me.Session("StartPgCounter") - 16
        If Me.Session("StartPgCounter") < 1 Then
            Me.Session("StartPgCounter") = 1
            btnPrevPage.Enabled = False
        Else
            btnPrevPage.Enabled = True
        End If
        Session("EndPgCounter") = Session("StartPgCounter") + 15
        If Me.Session("EndPgCounter") > Session("AmountofLines") Then
            Me.Session("EndPgCounter") = Session("AmountofLines")
            btnNextPage.Enabled = True
        Else
            btnPrevPage.Enabled = True
            btnNextPage.Enabled = True
        End If
        Dim k As Integer
        Me.txtFileContent.Text = ""
        For k = Me.Session("StartPgCounter") To Me.Session("EndPgCounter")
            Me.txtFileContent.Text += Session("finalResult" & k) & vbCrLf
        Next

        If Me.Session("StartPgCounter") = 1 Then
            btnPrevPage.Enabled = False
        End If
    End Sub

    Protected Sub btnTop_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnTop.Click

        btnNextPage.Enabled = True
        Me.txtFileContent.Text = ""
        Dim k As Integer
        For k = 1 To 15
            Me.txtFileContent.Text += Session("finalResult" & k) & vbCrLf
        Next
        Session.Add("StartPgCounter", 1)
        Session.Add("EndPgCounter", 15)
    End Sub
End Class

Open in new window

0
 
Jesus RodriguezIT ManagerCommented:
My suggestion is read the whole text and each line put it inside an array variable for example
Line(#Lines) then count the number of lines and do a cycle for showing and activating or counting the pagination on the textbox.

I'll modify your code and I will posted here
0
 
smanoAuthor Commented:
Forgot to add the sample .TXT file   sample-file.txt
Per above code I createad TXTdir folder on C: and moved the file there. This is the path shown on page_load event when calling GetContent method

Also Either C# or VB.NET works for me...
0
Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

 
smanoAuthor Commented:
I would appreciate it!
0
 
smanoAuthor Commented:
Thanks! Had to leave early will get back to you asap. I quickly glanced and getting the idea.
HAPPY THANKSGIIVING!!!!
0
 
smanoAuthor Commented:
Appreciate your HELP! Modified bunch of stuff but overall good idea! And holy Sessions, batman :-)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.