Captured Technology - Blog

Exporting a DataSet to a CSV File in ASP.Net

Exporting a DataSet to a CSV File in ASP.Net

Save up to 90% + GET FREE SHIPPING!








If you have the need to export data from a SQL Server Dataset to a CSV file through your website application, you can write to the response object in the Page_Init function of your page to produce the file. The user will not see the page at all but will be prompted to open or save the file on their desktop.

Here is the Page_Init function with the Response Write that you will need:

    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

        Dim objData As System.Data.DataSet = New System.Data.DataSet

        Dim objCSV As String = BuildCSV(objData)
        Dim objFilename As String = "Excel" & Today.ToString("yyyy-mm-dd") & ".csv"

        With Response
            .AddHeader("Content-disposition", "attachment;filename=" & objFilename)
            .ContentType = "text/plain"
        End With
    End Sub

And here is the supporting function to return the DataSet as a String:

Public Shared Function BuildCSV(ByRef objData As System.Data.DataSet) As String

        Dim objList As System.Data.DataSet = objData
        Dim objCSVOverall As New System.Text.StringBuilder
        Dim objCSVRow As New System.Text.StringBuilder

        '*** Build the header row
        For intCount As Integer = 0 To objList.Tables(0).Columns.Count - 1
            Dim CurrentColumn As System.Data.DataColumn = objList.Tables(0).Columns(intCount)
            objCSVRow.Append(Chr(34) & CurrentColumn.ColumnName & Chr(34) & ",")

        objCSVOverall.AppendLine(objCSVRow.ToString.Substring(0, objCSVRow.ToString.Length - 1))

        '*** iterate through the rows
        For Each CurrentRow As System.Data.DataRow In objList.Tables(0).Rows
            objCSVRow = New System.Text.StringBuilder

            For intCount As Integer = 0 To objList.Tables(0).Columns.Count - 1
                Dim objValue As String = CurrentRow.Item(intCount).ToString
                Dim CurrentColumn As System.Data.DataColumn = objList.Tables(0).Columns(intCount)

                objCSVRow.Append(Chr(34) & objValue.Replace(Chr(34), "'") & Chr(34) & ",")

            objCSVOverall.AppendLine(objCSVRow.ToString.Substring(0, objCSVRow.ToString.Length - 1))

        Return objCSVOverall.ToString
    End Function

Grad Pic 468x60

Google and Search Engine Ranking History

Google and Search Engine Ranking History

I went on a search this past weekend for an online service that would search all the major search engines including Google, Yahoo!, Bing, etc for the ranking of my websites based on keywords. And I wanted the keywords that it searches for to be the most searched keywords for my sites even if I was unaware of them. Then I wanted this information to be saved into history tables which I could compare from one week to the next. I was hoping something like this was available that I just hadn’t found before.

Well, my searching led me back to a tool that I had already used but didn’t realize that it was keeping history. SEOBook’s Rank Checker from has all these features except for one. The only thing it can not do is provide keywords that you should be tracking. But it can save as many websites with as many keywords, for as long of a period as you want to run the checker. And it has a built in scheduler so checking can be done automatically. I would suggest adding this add-on to Firefox and begin tracking your keyword rankings as soon as possible.

I also found another tool that could provide the one missing feature that SEO Book does not have. has a keyword feature that provides the search terms driving the most traffic to your site and search terms with the most traffic that is driving some traffic to your site. These two lists combined with the terms you want to rank well for complete all the keywords you will plug into the SEO Book Rank Checker.

.Net Development.Net Development

Adding Indexes to SQL Server 2005 Tables

Adding Indexes to SQL Server 2005 Tables

I had the opportunity this week to tune a SQL Server 2005 database to improve the performance of a web application. I first created indexes on the temporary tables within a stored procedure that was causing much of the delay and later discovered through the execution plan, there was specific bottle-neck that could be cleared. Here is an illustration of the temp table indexing:

CREATE NONCLUSTERED INDEX [#idxTemp_TempTable_Field1_Field2] ON #TempTable
[Field1] ASC,
[Field2] ASC,

But by executing the same stored procedure in a query window and selecting ‘Include Actual Execution Plan’ from the toolbar, I was able to see it individual query’s cost within the stored procedure. Then it is possible to look at the most expense queries, their most expensive operations, and add indexes to the permanent tables that reduce execution time.

Marketing Materials - Save up to 80%
Online MarketingOnline MarketingSocial MediaSocial Media

Quite Possibly the Best Backlink Finder

Quite Possibly the Best Backlink Finder

After working with a number of Backlink Finders including several I have mentioned on CapturedTech previously, I have really grown to love It is not the 100% solution without imperfections but it provides information about Backlinks that I have not seen in other free and paid services.

Google Backlinks

Getting ranked in Google is still about having backlinks from relevant sites without nofollow rel tags for relevant keywords. Page rank and the number of outgoing links on the linked page are also very important. combines all these factors into a Link Quality score which you can then sort report results by. Search someone else’s site backlinks and discover why they are ranked so high in Google and then duplicate their backlinks as much as possible.

One of the interesting facts about the Quality Link Score are that the nofollow tag isnt’ the end all to a quality link like many write. Numerous sites with good page rank on individual pages and few outgoing links score better even with nofollow tags. This is quite a gold mine as everyone searches and comments on pages without the nofollow, leaving endless nofollow pages without many outgoing links. Take a look at today as they have just improved their server performance to handle the increased demand they are experiencing.

The Importance of the Landing Page for SEO

The Importance of the Landing Page for SEO

The Landing Page is a single page website where a visitor comes after clicking on your PPC ad or natural search engine link. The main objective of the page is to introduce the guest to your product or service. A prospect maybe in search of a service that has the ability to resolve his or her problem, and your lead capture page helps them to find this product easily.

The different gears of the landing page serve to educate the prospect, instill confidence in your service or product, and motivate them to make a purchase. For instance, the headline of the page not only grabs the awareness of the visitor, but also gives them a reasonable idea whether he has reached the right place or a site that does not contain what they are looking for. Likewise, the contents of the page enlist the significant features of the product as well as its benefits. This helps the prospect evaluate the goodness of the product, and to ascertain if the product is actually beneficial for him.

The basis of a successful online business is trust, and it is sometimes difficult to gain confidence with the client. The lead capture page makes this easier for you. It helps you to hold the prospect for sometime without him/her navigating away from your site; it talks to him about his problems, and provides him a solution to alleviate his troubles. In doing all these things, the confidence level of the guest increases. Moreover, by displaying such things as security icons (VeriSign) and testimonials in appropriate places, you can further build a good rapport with your prospective customer.

At this time, you may be wondering if all this can be done through a website. What is the need of a lead capture page? Well, if you bring your buyers directly to your company website, it is quite possible that they might get confused while navigating around. They might not be able to find what they are looking for and leave your site without making that needed purchase. Yet an additional possibility is they might find some other interesting product, and move from your site in search of more information. Thus, the prospect visited your location, but did not take any action. In nutshell, your entire SEO campaign failed.

A landing page helps you to be in command of your SEO campaign completely. It allows you to wholly showcase the product that you want to sell. You get an opening to familiarize the prospect with the diverse aspects of the product. The guest, on the other hand, gets all the vital information, including special offers and discounts, about the product in one place. Furthermore, the lead capture page should not have any navigational links, allowing the prospect to remain focused and not to wander away. It is surely easy to convince a knowledgeable prospect to buy the product from such a page.

The search engines today are accountable for almost 90% of the traffic to a site. A well-built landing page has the potential to capture all this traffic and make your online business venture booming.

Gagandeep Singh, is a Freelance Writer who writes on Landing Page Optimization and Internet Marketing.

Another Great SQL Server Grep Function

Another Great SQL Server Grep Function

The first SQL Server Grep function I posted is one of the most popular items on the site to today therefore I thought I would share another great version of the MS SQL string search function you can use to search for terms within your database. This version uses a temporary table to store the results from a cursor and then displays the results to the output screen before dropping the temporary table.

create procedure searchforstring
@searchstring varchar(100)
declare @SQLString as varchar(1000)
declare @TableName as varchar(255)
declare @ColumnName as varchar(255)
declare @Count as int

select tablename, columnname,'select top 1 * 
from ['
+ + ']
where '
+' like ''%' + @searchstring + '%'' ' SQL_String from syscolumns , sysobjects, systypes where sysobjects.xtype='U' and = and
systypes.xtype=syscolumns.xtype and <> 'sysname' and in ('varchar','char','nvarchar','nchar','text','text') order by,syscolumns.colid create table #result(outputstring varchar(500)) OPEN C_SOURCE FETCH NEXT FROM C_SOURCE INTO @TableName,@ColumnName,@SQLstring WHILE @@FETCH_STATUS = 0 begin exec(@SQLString) --print @SQLString if @@rowcount > 0 insert into #result values( '[' + @TableName + '].' + @ColumnName) FETCH NEXT FROM C_SOURCE INTO @TableName,@ColumnName,@SQLstring END CLOSE C_SOURCE DEALLOCATE C_SOURCE select * from #result drop table #result END

Creating Tabbed Content With the ASP.Net Menu Control

Creating Tabbed Content With the ASP.Net Menu Control

A recent design required tabbed content on the section page of a website. After doing some research I came upon a solution for tabbed content using the ASP.Net Menu Control. By placing a Menu Control on the page along with a Multiview Control, it is possible to show the different items of the Multiview Control when menu items are selected.

The page markup looks like this:

<table border="0" width="100%">
    <td width="151px">
            <asp:MenuItem ImageUrl="~/Images/greentab.png" 
                          ToolTip="Item 1" Text=" " Value="0">asp:MenuItem>
            <asp:MenuItem ImageUrl="~/Images/whitetab.png" 
                          ToolTip="Item 2" Text=" " Value="1">asp:MenuItem>
            <asp:MenuItem ImageUrl="~/Images/whitetab.png" 
                          ToolTip="Item 3" Text=" " Value="2">asp:MenuItem>
            <asp:MenuItem ImageUrl="~/Images/whitetab.png" 
                          ToolTip="Item 4" Text=" " Value="3">asp:MenuItem>
            <asp:MenuItem ImageUrl="~/Images/whitetab.png" 
                          ToolTip="Item 5" Text=" " Value="4">asp:MenuItem>
    <td width="521px">
        ActiveViewIndex="0"  >
       <asp:View ID="Tab1" runat="server"  >
            <table cellpadding="0" cellspacing="0">
                <tr valign="top">
                    <td style="width:490px">
            ' Content 1
        <asp:View ID="Tab2" runat="server">
            <table cellpadding="0" cellspacing="0">
                <tr valign="top">
                    <td style="width:490px">
            ' Content 2
        <asp:View ID="Tab3" runat="server">
            <table cellpadding="0" cellspacing="0">
                <tr valign="top">
                    <td style="width:490px">
            ' Content 3
        <asp:View ID="Tab4" runat="server">
            <table cellpadding="0" cellspacing="0">
                <tr valign="top">
                    <td style="width:490px">
            ' Content 4
        <asp:View ID="Tab5" runat="server">
            <table cellpadding="0" cellspacing="0">
                <tr valign="top">
                    <td style="width:490px">
            ' Content 5

While the code to display the desired content is like this:

    Protected Sub mnuTabbedContent_MenuItemClick(ByVal sender As Object, ByVal e As MenuEventArgs) 
Handles mnuTabbedContent.MenuItemClick ' Show the Content MultiView1.ActiveViewIndex = Int32.Parse(e.Item.Value) ' Make All Tabs White mnuTabbedContent.Items(0).ImageUrl = "~/Images/whitetab.png" mnuTabbedContent.Items(1).ImageUrl = "~/Images/whitetab.png" mnuTabbedContent.Items(2).ImageUrl = "~/Images/whitetab.png" mnuTabbedContent.Items(3).ImageUrl = "~/Images/whitetab.png" mnuTabbedContent.Items(4).ImageUrl = "~/Images/whitetab.png" ' Make Selected Tab Green Select e.Item.Value Case 0 : mnuTabbedContent.Items(e.Item.Value).ImageUrl = "~/Images/greentab.png" Case 1 : mnuTabbedContent.Items(e.Item.Value).ImageUrl = "~/Images/greentab.png" Case 2 : mnuTabbedContent.Items(e.Item.Value).ImageUrl = "~/Images/greentab.png" Case 3 : mnuTabbedContent.Items(e.Item.Value).ImageUrl = "~/Images/greentab.png" Case 4 : mnuTabbedContent.Items(e.Item.Value).ImageUrl = "~/Images/greentab.png" Case Else : mnuTabbedContent.Items(e.Item.Value).ImageUrl = "~/Images/greentab.png" End Select End Sub

Creating Rounded Corners and Building the Table in ASP.Net Code

Creating Rounded Corners and Building the Table in ASP.Net Code

I have worked with a number of rounded corner solutions over the past 6 months since the interns that do design at work love rounded corners. I think the best method we have developed is to slice an image into 8 small images and then build a table surrounding content that shows the corners desired. I like to use Paint.Net to create the 8 images of 15px by 15px each. As you can imagine the images are top_left, top, top_right, left, right, etc.

The table code is like so:

<table cellpadding="0" cellspacing="0">
        <tr id="header">
            <td width="15px" height="15px"><img alt="gray_topleft" src="gray_topleft.png" />td>
            <td height="15px" style="background-image:url('gray_top.png'); background-repeat:repeat-x;">td>
            <td width="15px" height="15px"><img alt="gray_topright" src="gray_topright.png" />td>
        <tr id="body">
            <td width="15px" style="background-image:url('gray_left.png'); background-repeat:repeat-y;">td>
            <td width="15px" style="background-image:url('gray_right.png'); background-repeat:repeat-y;">td>
        <tr id="footer">
            <td width="15px" height="15px"><img alt="gray_bottomleft" src="gray_bottomleft.png" />td>
            <td height="15px" style="background-image:url('gray_bottom.png'); background-repeat:repeat-x;">td>
            <td width="15px" height="15px"><img alt="gray_bottomright" src="gray_bottomright.png" />td>

With our web solution we also need to create a user control that will be included within other user controls. For that reason we cannot use the html as it is but need to transform the html into controls and add them to the user control object. Here is an example of the above html code in VB.Net.

        Dim objTable As New Table
        objTable.CellPadding = 0
        objTable.CellSpacing = 0

        Dim objHeaderRow As New TableRow
        Dim objHeaderCell1 As New TableCell
        Dim objHeaderCell2 As New TableCell
        Dim objHeaderCell3 As New TableCell

        objHeaderCell1.Width = 15
        objHeaderCell1.Height = 15
        objHeaderCell1.Style.Add("background-image", "url('../Themes/Images/gray_topleft.png')")
        objHeaderCell1.Style.Add("background-repeat", "no-repeat")

        objHeaderCell2.Height = 15
        objHeaderCell2.Style.Add("background-image", "url('../Themes/Images/gray_top.png')")
        objHeaderCell2.Style.Add("background-repeat", "repeat-x")

        objHeaderCell3.Width = 15
        objHeaderCell3.Height = 15
        objHeaderCell3.Style.Add("background-image", "url('../Themes/Images/gray_topright.png')")
        objHeaderCell3.Style.Add("background-repeat", "no-repeat")


        Dim objBodyRow As New TableRow
        Dim objBodyCell1 As New TableCell
        Dim objBodyCell2 As New TableCell
        Dim objBodyCell3 As New TableCell

        objBodyCell1.Width = 15
        objBodyCell1.Style.Add("background-image", "url('../Themes/Images/gray_left.png')")
        objBodyCell1.Style.Add("background-repeat", "repeat-y")

        Dim objBodyContainer As New MessageContainer
        objBodyCell2.Style.Add("background-color", "#E4E2E2")

        objBodyCell3.Width = 15
        objBodyCell3.Style.Add("background-image", "url('../Themes/Images/gray_right.png')")
        objBodyCell3.Style.Add("background-repeat", "repeat-y")


        Dim objFooterRow As New TableRow
        Dim objFooterCell1 As New TableCell
        Dim objFooterCell2 As New TableCell
        Dim objFooterCell3 As New TableCell

        objFooterCell1.Width = 15
        objFooterCell1.Height = 15
        objFooterCell1.Style.Add("background-image", "url('../Themes/Images/gray_bottomleft.png')")
        objFooterCell1.Style.Add("background-repeat", "no-repeat")

        objFooterCell2.Height = 15
        objFooterCell2.Style.Add("background-image", "url('../Themes/Images/gray_bottom.png')")
        objFooterCell2.Style.Add("background-repeat", "repeat-x")

        objFooterCell3.Width = 15
        objFooterCell3.Height = 15
        objFooterCell3.Style.Add("background-image", "url('../Themes/Images/gray_bottomright.png')")
        objFooterCell3.Style.Add("background-repeat", "no-repeat")




ASP.Net Form Issues Solved

ASP.Net Form Issues Solved

I was working on a ASP.Net form this week that created several issues that I need to research to solve. Radio Buttons on the page were making all other controls undetectable within the code. Validation text was wrapping from next to the validated control to underneath the control. And the Reset button on the page was causing validation to occur which is not desirable.

Radio Button List

I was able to solve the issue of radio buttons on the page affecting all other controls by wrapping the buttons into a radio button list.

"rdSpecificInvoiceInfo" runat="server">
     "rdSpecificInvoiceInfoY" runat="server" value="Yes" />
     "rdSpecificInvoiceInfoN" runat="server" value="No" />

Validation Text Wrapping

The second issue was solved by adding a style tag to the validation control itself.

ID="rfvYourName" visible="False" runat="server" ErrorMessage="Your Name is Required"
Font-Bold="True" Font-Italic="False" ControlToValidate="txtYourName"

No Validation on Reset

The reset button was the simplest but most difficult to solve. I found one article detailing the use of validation groups which did nothing but waste time in the implementation. Finally I found some information online about setting one property on the button, CausesValidation.

"bReset" CausesValidation="False" CssClass="form_control" 
runat="server" ToolTip="Reset" Width="60" Text="Reset" />

Shoemoney Offers Tools and Training

Shoemoney Offers Tools and Training

If you liked the recent post on getting great back links with good page rank then you should take a look at Shoemoney Tools and the corresponding free training called ShoemoneyX. And one of the best internet marketing gurus, Jeremy Shoemaker, is now offering an inexpensive 9 day trial for $3.95 to his exclusive marketing toolset.

I have subscribed to his toolset on and off for the past 6 months and really like his backlinker checker which produces more results and more accurate results than the two tools I mentioned in the backlink article. The training I have been working through in my spare time and have found the material very good.

Blog Directory

Latest technology news.
 Patrick Stevens
 544  246440  7/11/2024



Blog Calendar