1

ページ読み込みイベントで私がやろうとしている

        protected void Page_Load(object sender, EventArgs e)
        {
     XmlReader reader = XmlReader.Create(FeedUrl);
                   SyndicationFeed feed = SyndicationFeed.Load(reader);

                   lstViewNewsFeeds.DataSource = feed.Items;
                   lstViewNewsFeeds.DataBind(); 
         }   

protected void lstViewNewsFeeds_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        try
        {
            // Instantiate listview control object.
            ListViewDataItem lvDataItem = (ListViewDataItem)e.Item;

            at this line given exception
            **DataRowView drvItem = (DataRowView)lvDataItem.DataItem;** 

            //Make sure that data item is binding with listview.
            if (lvDataItem.ItemType == ListViewItemType.DataItem)
            {

                SyndicationItem item = e.Item.DataItem as SyndicationItem;

                LinkButton linkButtonTitle = (LinkButton)e.Item.FindControl("lbNewsTitle");
                Panel panelNewsDescContent = (Panel)e.Item.FindControl("panelNewsDescription"); 

                // Make sure that linkButtonTile is referenced.
                if (linkButtonTitle != null)
                {
                   // linkButtonTitle.Text = Convert.ToString(item.Title);
                    linkButtonTitle.Text = Convert.ToString(drvItem["Title"]);
                }
                // Make sure that panel object is referenced.
                if (panelNewsDescContent != null)
                {
                    Label lblBox = new Label();
                   // lblBox.Text = Convert.ToString(item.Summary);
                    panelNewsDescContent.Controls.Add(lblBox);
                }

                //Label l = e.Row.FindControl("Label1") as Label;
                //l.Text = item.Title.Text;
                //HyperLink hl = e.Row.FindControl("HyperLink1") as HyperLink;
                //hl.Text = item.Title.Text;
                //hl.NavigateUrl = item.Links[0].Uri.AbsoluteUri;
            }
        }
        catch(Exception ee)
        {
            Response.Write(ee.Message);
        }

エラーを与える:

'System.Data.DataRowView'。タイプ'System.ServiceModel.Syndication.SyndicationItem'のオブジェクトをタイプ'System.Data.DataRowView'にキャストできません。タイプのオブジェクトをキャストできません

このエラーを削除する方法を理解できません。ここで私を助けてください。

4

3 に答える 3

0

私はこれがうまくいくことを試しました。

 SyndicationItem item = e.Item.DataItem as SyndicationItem;  




 protected void lstViewNewsFeeds_ItemDataBound(object sender, ListViewItemEventArgs e)
        {
            try
            {
                // Instantiate listview control object.
                ListViewDataItem lvDataItem = (ListViewDataItem)e.Item;
                //DataRowView drvItem = (DataRowView)lvDataItem.DataItem; 
                //SyndicationItem item = (SyndicationItem)lvDataItem.DataItem;

                //Make sure that data item is binding with listview.
                if (lvDataItem.ItemType == ListViewItemType.DataItem)
                {

                    SyndicationItem item = e.Item.DataItem as SyndicationItem;

                    LinkButton linkButtonTitle = (LinkButton)e.Item.FindControl("lbNewsTitle");
                    Panel panelNewsDescContent = (Panel)e.Item.FindControl("panelNewsDescription"); 

                    // Make sure that linkButtonTile is referenced.
                    if (linkButtonTitle != null)
                    {
                       // linkButtonTitle.Text = Convert.ToString(item.Title);
                        linkButtonTitle.Text = Convert.ToString(item.Title.Text);
                    }
                    // Make sure that panel object is referenced.
                    if (panelNewsDescContent != null)
                    {
                        Label lblBox = new Label();
                        lblBox.Text = Convert.ToString(item.Summary);
                        panelNewsDescContent.Controls.Add(lblBox);
                    }

                    //Label l = e.Row.FindControl("Label1") as Label;
                    //l.Text = item.Title.Text;
                    //HyperLink hl = e.Row.FindControl("HyperLink1") as HyperLink;
                    //hl.Text = item.Title.Text;
                    //hl.NavigateUrl = item.Links[0].Uri.AbsoluteUri;
                }
            }
            catch(Exception ee)
            {
                Response.Write(ee.Message);
            }
}

ところで、助けてくれてありがとう。

于 2012-08-29T14:08:50.963 に答える
0

SyndicationFeed.Itemsプロパティは を返すためIEnumerable<SyndicationItem>、代わりに にキャストする必要がありますSyndicationItem

SyndicationItem item = (SyndicationItem)lvDataItem.DataItem;
于 2012-08-29T13:58:35.343 に答える
0

これを試して:

protected void lstViewNewsFeeds_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        try
        {
            //Make sure that data item is binding with listview.
            if (lvDataItem.ItemType == ListViewItemType.DataItem)
            {

                SyndicationItem item = e.Item.DataItem as SyndicationItem;

                LinkButton linkButtonTitle = (LinkButton)e.Item.FindControl("lbNewsTitle");
                Panel panelNewsDescContent = (Panel)e.Item.FindControl("panelNewsDescription"); 

                // Make sure that linkButtonTile is referenced.
                if (linkButtonTitle != null)
                {
                   linkButtonTitle.Text = Convert.ToString(item.Title);
                }
                // Make sure that panel object is referenced.
                if (panelNewsDescContent != null)
                {
                    Label lblBox = new Label();
                    lblBox.Text = Convert.ToString(item.Summary);
                    panelNewsDescContent.Controls.Add(lblBox);
                }

                Label l = e.Row.FindControl("Label1") as Label;
                l.Text = item.Title.Text;
                HyperLink hl = e.Row.FindControl("HyperLink1") as HyperLink;
                hl.Text = item.Title.Text;
                hl.NavigateUrl = item.Links[0].Uri.AbsoluteUri;
            }
        }
        catch(Exception ee)
        {
            Response.Write(ee.Message);
        }
}
于 2012-08-29T14:09:39.173 に答える