Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

ASP.net C# Bind a Yahoo RSS Feed to a Gridview

Posted on 2008-10-18
3
Medium Priority
?
2,173 Views
Last Modified: 2013-12-17
Hi,
I am trying to get code to read from RSS Feed to a GridView in ASP.Net C#
I have the c# code in App_Code folder CodeCS and VB code in App_Code folder CodeVB
and referenced the folders in Web.config as follows:
<codeSubDirectories><add directoryName="VBCode"/><add directoryName="CSCode"/>
I am getting the following errors:

Error      20      An object reference is required for the non-static field, method, or property
'System.Web.UI.WebControls.BaseDataBoundControl.DataSource.get'      
C:\Projects\Web\AssetAllocation\App_Code\CodeCS\FeedRss.aspx.cs
Line17       Column 9      GridView.DataSource = GetDataSet().Tables[3];

Error      21      An object reference is required for the non-static field, method, or property
'System.Web.UI.Control.DataBind()'      C:\Projects\Web\AssetAllocation\App_Code\CodeCS\FeedRss.aspx.cs
Line18       Column 9      GridView.DataBind();

Error      22      An object reference is required for the non-static field, method, or property
'System.Web.UI.WebControls.DataBoundControl.DataMember.get'      
C:\Projects\Web\AssetAllocation\App_Code\CodeCS\FeedRss.aspx.cs      25
Line 25      Column 9      GridView.DataMember = "item";

Error      23      An object reference is required for the non-static field, method, or property
'System.Web.UI.WebControls.BaseDataBoundControl.DataSource.get'      
C:\Projects\Web\AssetAllocation\App_Code\CodeCS\FeedRss.aspx.cs
Line 26      Column 9      GridView.DataSource = ds;

Error      21      'System.Web.UI.Page' does not contain a definition for 'DataItem'
and no extension method 'DataItem' accepting a first argument of type 'System.Web.UI.Page'
could be found (are you missing a using directive or an assembly reference?)      
c:\Projects\Web\AssetAllocation\FeedRssCS.aspx
Line 26      Column 37      DataItem
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
public partial class rssCS : System.Web.UI.Page
{
 
    protected void Page_Load(object sender, EventArgs e)
    {
        GridView.DataSource = GetDataSet().Tables[3];
        GridView.DataBind();
    }
    private DataSet GetDataSet()
        
    {
        DataSet ds = new DataSet("rsRSS");
        ds.ReadXml("http://rss.news.yahoo.com/rss/mostviewed");
        GridView.DataMember = "item";
        GridView.DataSource = ds;
        //GridView1.DataBind();
        return ds;
    }
 
 
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        GridViewRow row = e.Row;
        DateTime CurrTime = DateTime.Now.Date;
 
        if (row.RowIndex >= 0) // Start looping on the first row
            if (row.RowType == DataControlRowType.DataRow)
            {
                row.Cells[0].Text = row.Cells[0].Text;
                row.Cells[1].Text = row.Cells[1].Text;
            }
 
        }
 
 
}
 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="~/App_Code/CodeCS/FeedRss.aspx.cs" Inherits="rssCS" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.Linq" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>
<!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">
    <title>FeedRss</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView
        id="GridView"
        DataSourceId="srcMovies"
        Runat="server" />
        <ItemTemplate>
        <asp:HyperLink ID="HyperLink1" NavigateUrl=<%#DataBinder.Eval(Container.DataItem,"link") %> 
        runat="server">
        <%#DataBinder.Eval(Container.DataItem,"title") %>
        </asp:HyperLink>
        </ItemTemplate>
        </asp:GridView>
<!--
     See TextFile.txt
-->
    <asp:SqlDataSource
        id="srcMovies"
        ConnectionString="Data Source=.\SQLExpress;
            AttachDbFilename=|DataDirectory|MyDatabase.mdf;
            Integrated Security=True;User Instance=True"
        SelectCommand="SELECT * FROM Movies"
        Runat="server" />
    </div>
    </form>
</body>
</html>

Open in new window

0
Comment
Question by:homeshopper
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 26

Accepted Solution

by:
Anurag Thakur earned 1500 total points
ID: 22755083
why are you trying to give 2 datasources to the grid view
one datasource is when you load the grid view and is using u r local database
the second one is the dataset which you prepare from the rss feed

just try to provide only one datasource for your gridview and i think it should work fine

one more thing i noticed
GridView.DataMember = "item"; in the function GetDataSet()
you even dont need this line if you are specifying your columns in the grid view definition
0
 

Author Comment

by:homeshopper
ID: 22761271
Hi ragi0017,
Sorry not to have got back to your earlier.
I tried following your suggestions, not sure if I have got it right yet.
I made some alterations and the new code is attached.
Still getting 1 error now:
Error      38      'System.Web.UI.Page' does not contain a definition for 'DataItem' and no extension method 'DataItem' accepting a first argument of type 'System.Web.UI.Page' could be found (are you missing a using directive or an assembly reference?)      c:\Projects\Web\AssetAllocation\FeedRssCS.aspx      26      38      http://localhost/AssetAllocation/

<%#DataBinder.Eval(Container.DataItem,"title") %>

using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class rssCS : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        /// delete this line----GridView.DataSource = GetDataSet().Tables[3];
        ///delete this line----GridView.DataBind();
    }
    private DataSet GetDataSet()    
    {
        DataSet ds = new DataSet("rsRSS");
        ds.ReadXml("http://rss.news.yahoo.com/rss/mostviewed");
        ///delete this line----GridView.DataMember = "item";
        ///delete this line----GridView.DataSource = ds;
        //delete this line----GridView1.DataBind();
        return ds;
    }
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        GridViewRow row = e.Row;
        DateTime CurrTime = DateTime.Now.Date;
        if (row.RowIndex >= 0) // Start looping on the first row
            if (row.RowType == DataControlRowType.DataRow)
            {
                row.Cells[0].Text = row.Cells[0].Text;
                row.Cells[1].Text = row.Cells[1].Text;
            }
        }
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="~/App_Code/CodeCS/FeedRss.aspx.cs" Inherits="rssCS" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.Linq" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>
<!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">
    <title>FeedRss</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView
        id="GridView"
        DataSourceId="srcMovies"
        Runat="server" />
        <ItemTemplate>
        <asp:HyperLink ID="HyperLink1" NavigateUrl=<%#DataBinder.Eval(Container.DataItem,"link") %> 
        runat="server">
        <%#DataBinder.Eval(Container.DataItem,"title") %>
        </asp:HyperLink>
        </ItemTemplate>
        </asp:GridView>
<!--
-->
    </div>
    </form>
</body>
</html>

Open in new window

0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…

670 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