SIGN UP MEMBER LOGIN:    
ARTICLE

Scrolling News Web Control using ASP.Net and C#

Posted by Munir Shaikh Articles | Visual C# February 27, 2006
This article shows to create scrolling news web control using ASP.Net and C#, simple to understand and can be used as a control in any of the ASP.Net page.
Reader Level:
Download Files:
 

On many of the web portals/sites it is observed that latest news start scrolling from down to top.

To do this need to write JavaScript in detail, there could be number of storing news format. I have written this web control to avoid extensive use of JavaScript by using Marquee at server side.

I have tested this application on following browsers:

  1. Internet Explorer 6.0
  2. Netscape Navigator 7.2
  3. Mozilla Firefox 1.5

So no need to worry much about cross browser performance issue, it work simply great on all above browsers.

Requirement: Need To make following tables in SQL Server Database, and put corresponding records in the tables.

This is a very simple table structure in Master Detail format. In tbl_News all the titles and date created will be stored and corresponding newsDetail are stored in tbl_NewsDetail.

News Table

create table tbl_News
(
 newsId  int  primary key identity(1,1) Not null,
 newTitle varchar(50) Not null,
 dateCreated datetime 
)

News Detail Table

create table tbl_NewsDetail
(
 dtlId  int  primary key identity(1,1) Not Null,
 newsId  int foreign key references tbl_news,
 newsDetail varchar(8000)
)

Explanation in detail about the coding

In folder called as "userControll" I have web control as "Scrolling_News.ascx".

The code behind of this page i.e. on page load I have following code

private void Page_Load(object sender, System.EventArgs e)

{

          // Put user code to initialize the page here

          SqlConnection myCon = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);

          string strSql = "SELECT * FROM tbl_News order by dateCreated asc";

          string strScrolling = "";

          HtmlTableCell cellScrolling = new HtmlTableCell();

          SqlCommand myComd = new SqlCommand(strSql,myCon);

          SqlDataReader sqlRdr;

          try

          {

                   myCon.Open();

                   sqlRdr = myComd.ExecuteReader();

                   strScrolling = "<Marquee OnMouseOver='this.stop();' OnMouseOut='this.start();' direction='up'
                                     scrollamount='2' bgcolor='#000000' width='40%'>";

                   while(sqlRdr.Read())

                   {

                             strScrolling = strScrolling + "<a href='#' OnClick="+"javascript:window.open
                                                ('newsDetail.aspx?NewsId="+sqlRdr.GetValue(0)
                                                +"','NewsDetail','width=400,height=400;toolbar=no;');"+"><font
                                                face='verdana' size='2' color='#ffffff'>"+ sqlRdr.GetValue(1)
                                                +"</a>&nbsp;&nbsp;"+sqlRdr.GetValue(2).ToString()+"</font><br><br>";

                   }

                   strScrolling = strScrolling +"</Marquee>";

                   sqlRdr.Close();

                   cellScrolling.InnerHtml = strScrolling;

                   rowScrolling.Cells.Add(cellScrolling);  

          }

          catch(Exception msg)

          {

                   Response.Write(msg.Message);

          }

          finally

          {

                   //close sql connection   

                   myCon.Close();

          }

}

Which just prepare a connection with the database and get the newsTitle and dateCreated to scroll in the marquee in direction='UP'. I have prepared a string which can be added dynamically in a table row to fit in appropriate table row, which generates scrolling news section with anchor (link) to open detail in the new window. Idea behind opening in new window to stick the user to same site. You can do following with the marquee and JavaScript functionality used in the same.

  • Change the direction of the scrolling [direction='up']
  • Can stop on mouseover of the link [OnMouseOver='this.stop();']
  • Can start on mouseout of the link [OnMouseOut='this.start();']
  • Can controll the speed of the scrolling [direction='up' scrollamount='2']

Microsoft also provide Add rotator component which can be used with XML, but it differs with respect that
by having above functionality.

In newsDetail.aspx page, I have again simple code to get the detail based on querystring of newsId.

Using this control in a page

Register this control as below in a file in which you want to use this

<%@ Register TagPrefix="Scrolling" TagName="News" src="userControll/Scrolling_News.ascx" %>

and use this in a table as below

<table width="100%" bgColor="#ccccff">
<tr>
    <td width="60%"><STRONG><FONT face="Tahoma">News Section</FONT></STRONG></td>
</tr>
<tr>
    <td><SCROLLING:NEWS id="scroller" runat="server"></SCROLLING:NEWS></td>
</tr>
</
table>

That' all enjoy...

What you can do as enhancement?

As an enhancement to this tutorial/article one can add field imageURL in newsDetail table. Also an admin control panel can be provided, to add news and news details to the database by simply having additional screen, which will become complete web application

I think this code snippet is very simple and handy to use as a control in day to day life.

Next article >> I am thinking of writing dynamic drop down, Menu as web control (0 to 1 levels)

Login to add your contents and source code to this article
share this article :
post comment
 

i want this code in visual studio 2005 ,plz can u send it to my mail id

Posted by prachi chakke Sep 20, 2011

Hi, Thank for this article. very useful and essential one. but this is not work for me. kindly give me a source code. send to my id. thank U.

Posted by Sasi Sep 09, 2011

HELLO MUNIR,

I SOLVE THE ABOVE ERROR, BUT NOW I WANT TO KNOW HOW I CAN SET THE HEITHT OF MARQUEE.

Posted by MANSOOR ARSHAD Dec 19, 2009

hi munir i received the following error please help me i am using vb code

Description:
An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: Input string was not in a correct format.

Source Error:

Line 21:         While (sqlRdr.Read())
Line 22:             'strScrolling = strScrolling + "<a href='#' OnClick=" + "javascript:window.open('newsDetail.aspx?NewsId=" + sqlRdr.GetValue(0) + "','NewsDetail','width=400,height=400;toolbar=no;');" + "><font face='verdana' size='2' color='#ffffff'>" + sqlRdr.GetValue(1) + "</a>&nbsp;&nbsp;" + sqlRdr.GetValue(2).ToString() + "</font><br><br>"
Line 23:             strScrolling = strScrolling + "<a href='#' OnClick=" + "javascript:window.open('newsDetail.aspx?NewsId=" + sqlRdr.GetValue(0) + "','NewsDetail','width=400,height=400;toolbar=no;');" + "><font face='verdana' size='2' color='#ffffff'>" + sqlRdr.GetValue(1) + "</a>&nbsp;&nbsp;" + sqlRdr.GetValue(2).ToString() + "</font><br><br>"
Line 24:         End While
Line 25:         strScrolling = strScrolling + "</Marquee>"

Source File: F:\Mansoor\Dar-e-Arqam WebApplication\Arqam.Web.UI\UserControls\Scrolling_News.ascx.vb    Line: 23

Stack Trace:

[FormatException: Input string was not in a correct format.]
Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat) +216
Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat) +83
[InvalidCastException: Conversion from string "<Marquee OnMouseOver='this.stop(" to type 'Double' is not valid.]
Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat) +234
Microsoft.VisualBasic.CompilerServices.Operators.AddObject(Object Left, Object Right) +2828
UserControls_Scrolling_News.Page_Load(Object sender, EventArgs e) in F:\Mansoor\Dar-e-Arqam WebApplication\Arqam.Web.UI\UserControls\Scrolling_News.ascx.vb:23
System.Web.UI.Control.OnLoad(EventArgs e) +80
System.Web.UI.Control.LoadRecursive() +49
System.Web.UI.Control.LoadRecursive() +132
System.Web.UI.Control.LoadRecursive() +132
System.Web.UI.Control.LoadRecursive() +132
System.Web.UI.Control.LoadRecursive() +132
System.Web.UI.Control.LoadRecursive() +132
System.Web.UI.Control.LoadRecursive() +132
System.Web.UI.Control.LoadRecursive() +132
System.Web.UI.Control.LoadRecursive() +132
System.Web.UI.Control.LoadRecursive() +132
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3750


Version Information: Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433

Posted by MANSOOR ARSHAD Dec 19, 2009

Hello Sir I did get it to work in visual studio 2008 with the SQL express. Thanks for your tutorial. Two issues remains: The test text that I'm using is underlined and I keep getting a a network/database error stating: (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) I would appreciate any pointers or tips.

Posted by Ernest Alford Apr 16, 2009
Nevron Gauge for SharePoint
Become a Sponsor
PREMIUM SPONSORS
  • ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
    ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications. Visit DynamicPDF here
Become a Sponsor