Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Display TXT file in Textbox (Multiline)

Posted on 2010-11-24
6
Medium Priority
?
466 Views
Last Modified: 2012-06-27
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

0
Comment
Question by:smano
  • 4
  • 2
6 Comments
 
LVL 13

Expert Comment

by:Jesus Rodriguez
ID: 34207939
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
 
LVL 1

Author Comment

by:smano
ID: 34207970
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
 
LVL 1

Author Comment

by:smano
ID: 34207977
I would appreciate it!
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 13

Accepted Solution

by:
Jesus Rodriguez earned 2000 total points
ID: 34208418
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
 
LVL 1

Author Comment

by:smano
ID: 34210142
Thanks! Had to leave early will get back to you asap. I quickly glanced and getting the idea.
HAPPY THANKSGIIVING!!!!
0
 
LVL 1

Author Comment

by:smano
ID: 34234407
Appreciate your HELP! Modified bunch of stuff but overall good idea! And holy Sessions, batman :-)
0

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Color can increase conversions, create feelings of warmth or even incite people to get behind a cause. If you want your website to really impact site visitors, then it is vital to consider the impact color has on them.
When the s#!t hits the fan, you don’t have time to look up who’s on call, draft emails, call collaborators, or send text messages. An instant chat window is definitely the way to go, especially one like HipChat. HipChat is a true business app. An…
The viewer will learn how to dynamically set the form action using jQuery.
Use Wufoo, an online form creation tool, to make powerful forms. Learn how to choose which pages of your form are visible to your users based on their inputs. The page rules feature provides you with an opportunity to create if:then statements for y…
Suggested Courses

971 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question