2012-03-31 55 views
0

我有一个使用jquery和Repeater的股票代码。但是我只能得到10个new_Feed表的最新更新记录。这是源代码和代码背后的原因。使用Repeater和Jquery的新闻股票代码

<ul id="js-news" class="js-hidden"> 
<li class="news-item"> 
    <asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
    <asp:Label ID="myLabel" runat="server" Text='<%# Eval("Text") %>' /> 
    </ItemTemplate> 
    </asp:Repeater> 
</li> 
</ul> 

SqlConnection con = new SqlConnection(Constring); 
    con.Open(); 
    SqlCommand cmd = new SqlCommand("select Text from News_Feed", con); 

    SqlDataAdapter sqlDa = new SqlDataAdapter(cmd); 
    DataTable dt = new DataTable(); 
    sqlDa.Fill(dt); 
    Repeater1.DataSource = dt; 
    Repeater1.DataBind(); 
    SqlDataReader reader = cmd.ExecuteReader(); 

    while (reader.Read()) 
    { 
     foreach (RepeaterItem ri in Repeater1.Items) 
     { 

      Label lbl = ri.FindControl("myLabel") as Label; 

      string Text= reader["Text"].ToString(); 
      lbl.Text = Text; 
     } 


    } 
    reader.Close(); 
+0

嗯,我也试过。然后我把所有的10行一起作为1行。 – 2012-03-31 21:26:26

+0

我想这个评论是为我的答案。这应该用一些CSS样式来解决。 – Shyju 2012-03-31 21:29:00

回答

2

在代码中,你是一个DataTable中结合您的中继器控制,然后做一个的ExecuteReader查询和循环直通结果重新设置。这不是必需的。你需要任何一个。通过DataTable或Datareader进行数据绑定。

所以,你的代码可以改变这样

using(SqlConnection con = new SqlConnection(ConString)) 
{ 
    SqlCommand cmd = new SqlCommand("select top 10 Text from News_Feed", con); 
    SqlDataReader reader = cmd.ExecuteReader(); 
    Repeater1.DataSource = reader; 
    Repeater1.DataBind(); 
} 

,并在您的标记

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
    <asp:Label ID="myLabel" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Text")%>' /> 
    </ItemTemplate> 
</asp:Repeater> 

这应该工作。它被测试。

我在您的问题中看不到任何jQuery代码。基本上上面的代码会在页面加载时加载表格中的前10条记录。您可能需要使用order by子句更新查询以获取正确的数据。

如果你真的想要某种动态更新的新闻动态(不重新加载页面),你应该使用jQuery来做到这一点。最初加载您的内容,然后使用javascript setInterval函数每隔n秒执行一次ajax调用,并使用从ajax调用接收到的数据重新加载新闻报道。

下面是一个简单的工作示例,用于使用jQuery ajax动态加载内容。

有在您的网页div来显示数据

<div id="divNews"></div> 

添加下面的脚本到您的网页

<script type="text/javascript"> 

    $(function() { 
     function GetNewsItems() { 
      $("#divNews").load("newsfeed.ashx"); 
     } 
     setInterval(function() { GetNewsItems() }, 5000); 
    }); 

</script> 

所以上面的脚本使用setInterval函数执行GetNewsITems函数加载数据每5秒钟一次。它调用一个名为newsfeed.ashx的文件作为数据 因此,创建一个通用处理程序caleld newsfeed.ashx并将ProcessRequest方法中的代码替换为以下代码

public void ProcessRequest(HttpContext context) 
{ 
     context.Response.ContentType = "text/plain"; 
     StringBuilder str = new StringBuilder(); 
     str.Append("<ul>"); 
     using (SqlConnection con = new SqlConnection(ConString)) 
     { 
      SqlCommand cmd = new SqlCommand("select Text from News_Feed ORDER BY ID DESC", con); 
      SqlDataReader reader = cmd.ExecuteReader(); 
      while (reader.Read()) 
      { 
       str.Append("<li>"+reader.GetString(0)+"</li>"); 
      } 
     } 
     str.Append("</ul>"); 
     context.Response.Write(str.ToString()); 
} 

通用处理程序将从表中返回包含10个项目的UL元素的标记。我们正在使用jQuery加载方法将此内容加载到div中。

+0

实际上,jQuery没有什么问题,然后我用'

  • jQuery News Ticker现在支持从右到左的语言!
  • \t \t
  • jQuery新闻现在Ticker支持通过RSS feed加载内容!
  • \t \t
  • jQuery News Ticker现在在项目之间有一个可选的淡入淡出效果!
  • \t \t
  • 对jQuery News Ticker进行了新更新!查看下面的更多细节!
  • >'它完美的工作..但因为我使用动态标签..它导致一个问题! – 2012-03-31 21:39:34