I am parsing xml of rss feed and displaying it. I want to refresh a div which shows recent news. I am using update panel and asp timer to do this(please refer the below code) but for each refresh entire page is getting refreshed.
Can anyone let me know where i am going wrong
protected void Page_Load(object sender, EventArgs e)
{
string loggedinuser = "experiment4";
Read_Rss(loggedinuser);
var rssFeed = from el in doc.Elements("rss").Elements("channel").Elements("item")
orderby datetime(el.Element("pubDate").Value) descending
select new
{
Title = el.Element("title").Value,
Link = el.Element("link").Value,
Description = replace_other(el.Element("description").Value),
// Image = regex(el.Element("description").Value),
Image =
el.Element(media + "thumbnail") != null ?
el.Element(media + "thumbnail").Attribute("url").Value :
el.Element(media + "content") != null ?
el.Element(media + "content").Attribute("url").Value :
regex(el.Element("description").Value) != null ?
regex(el.Element("description").Value) : null,
PubDate = datetime(el.Element("pubDate").Value),
};
lvFeed.DataSource = rssFeed;
lvFeed.DataBind();
Data_Load(sender, e);
}
protected void Data_Load()
{
// try
//{
string loggedinuser = "experiment4";
Read_Rss(loggedinuser);
var rssFeed = from el in doc.Elements("rss").Elements("channel").Elements("item")
orderby datetime(el.Element("pubDate").Value) descending
select new
{
Title = el.Element("title").Value,
};
newFeed.DataSource = rssFeed;
newFeed.DataBind();
}
<div id="leftcolumn">
<asp:ListView runat="server" ID="lvFeed">
<LayoutTemplate>
<ul>
<li runat="server" id="itemPlaceHolder"><a></li>
</ul>
</LayoutTemplate>
<ItemTemplate>
<div class="box">
<strong>
<%#Eval("Title") %>
: </strong>
<br />
<br />
<img src="<%#Eval("Image")%>" alt="" id="photo" class="photo" onload="imageload(this,0,100)"
onerror="onImgError(this,0)"></img>
<%#Eval("Description")%><a href="<%#Eval("Link") %>">readmore</a><br />
<br />
<br />
</div>
</ItemTemplate>
</asp:ListView>
</div>
<div id='rightcolumn'>
<div id='side'>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:Timer ID="Timer2" OnTick="Data_Load" runat="server" Interval="300">
</asp:Timer>
<asp:ListView runat="server" ID="newFeed">
<LayoutTemplate>
<ul>
<li runat="server" id="itemPlaceHolder"><a></li>
</ul>
</LayoutTemplate>
<ItemTemplate>
<div class="small">
<%#Eval("Title") %>
:<a href="<%#Eval("Link") %>">readmore</a><br />
</div>
<br />
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
</div>
I am parsing xml of rss feed and displaying it. I want to refresh a div which shows recent news. I am using update panel and asp timer to do this(please refer the below code) but for each refresh entire page is getting refreshed.
Can anyone let me know where i am going wrong
protected void Page_Load(object sender, EventArgs e)
{
string loggedinuser = "experiment4";
Read_Rss(loggedinuser);
var rssFeed = from el in doc.Elements("rss").Elements("channel").Elements("item")
orderby datetime(el.Element("pubDate").Value) descending
select new
{
Title = el.Element("title").Value,
Link = el.Element("link").Value,
Description = replace_other(el.Element("description").Value),
// Image = regex(el.Element("description").Value),
Image =
el.Element(media + "thumbnail") != null ?
el.Element(media + "thumbnail").Attribute("url").Value :
el.Element(media + "content") != null ?
el.Element(media + "content").Attribute("url").Value :
regex(el.Element("description").Value) != null ?
regex(el.Element("description").Value) : null,
PubDate = datetime(el.Element("pubDate").Value),
};
lvFeed.DataSource = rssFeed;
lvFeed.DataBind();
Data_Load(sender, e);
}
protected void Data_Load()
{
// try
//{
string loggedinuser = "experiment4";
Read_Rss(loggedinuser);
var rssFeed = from el in doc.Elements("rss").Elements("channel").Elements("item")
orderby datetime(el.Element("pubDate").Value) descending
select new
{
Title = el.Element("title").Value,
};
newFeed.DataSource = rssFeed;
newFeed.DataBind();
}
<div id="leftcolumn">
<asp:ListView runat="server" ID="lvFeed">
<LayoutTemplate>
<ul>
<li runat="server" id="itemPlaceHolder"><a></li>
</ul>
</LayoutTemplate>
<ItemTemplate>
<div class="box">
<strong>
<%#Eval("Title") %>
: </strong>
<br />
<br />
<img src="<%#Eval("Image")%>" alt="" id="photo" class="photo" onload="imageload(this,0,100)"
onerror="onImgError(this,0)"></img>
<%#Eval("Description")%><a href="<%#Eval("Link") %>">readmore</a><br />
<br />
<br />
</div>
</ItemTemplate>
</asp:ListView>
</div>
<div id='rightcolumn'>
<div id='side'>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:Timer ID="Timer2" OnTick="Data_Load" runat="server" Interval="300">
</asp:Timer>
<asp:ListView runat="server" ID="newFeed">
<LayoutTemplate>
<ul>
<li runat="server" id="itemPlaceHolder"><a></li>
</ul>
</LayoutTemplate>
<ItemTemplate>
<div class="small">
<%#Eval("Title") %>
:<a href="<%#Eval("Link") %>">readmore</a><br />
</div>
<br />
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
</div>
Share
asked Apr 2, 2013 at 23:47
Praneeth PuligundlaPraneeth Puligundla
4155 silver badges22 bronze badges
1
-
try removing the update panel and assigning
Data_Load
to a buttonOnClick
to see if your code is working correctly or not. – th1rdey3 Commented Apr 3, 2013 at 6:00
4 Answers
Reset to default 3If I were you I would set a trigger on a hidden button which is located in the update panel and then call button.click() using javascript timer on that trigger, I've done this before, weird trick that works.
Trigger example: http://www.asp/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-updatepanel-triggers
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer runat="server" id="Timer1" interval="900000" ontick="Timer1_Tick" />
<asp:UpdatePanel runat="server" id="TimedPanel" updatemode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger controlid="Timer1" eventname="Tick" />
</Triggers>
<ContentTemplate>
<div>
//your div content goes here
</div>
</ContentTemplate>
</asp:UpdatePanel>
the interval attribute of timer control is in milisecond... so for 15 minutes interval would be 900000 ((15*60) * 1000) -> 1 sec=1000 milisecond
now, create an event in codebehind which will be called after interval period
protected void Timer1_Tick(object sender, EventArgs e)
{
//update div content
}
If you want to refresh an update panel, you can call Update on it after setting its UpdateMode to conditional. Actually, check out this example it's pretty good:
http://msdn.microsoft./en-us/library/system.web.ui.updatepanel.update.aspx
Check the below example, done using jquery.
<html xmlns="http://www.w3/1999/xhtml">
<head runat="server">
<title></title>
<script src="http://code.jquery./jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#changePanel").click(function() {
var data = "foobar";
$("#panel").hide().html(data).fadeIn('fast');
})
});
</script>
<style type="text/css">
div {
padding: 1em;
background-color: #00c000;
}
input {
padding: .25em 1em;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="panel">test data</div>
<input id="changePanel" value="Change Panel" type="button"/>
</form>
</body>
</html>
or you could use something like jQuery Auto refresh div messing up
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744914471a4600750.html
评论列表(0条)