文字直播是满足一些观看视频直播而条件不足的球迷所设定的比赛直播方式,例如在长途车上为了能够了解比赛的实时赛况但又限于流量和网速等问题,就出现了文字直播的方式。无论是拥有无线上网卡的笔记本电脑或者手机等终端设备都可以通过访问文字直播满足用户需求,本实例将通过预先定义好的直播数据来模拟文字直播效果,具体实现步骤如下:

(1)新建一个网站并创建一个Default.aspx页面,在页面将使用div标签进行直播窗口的布局,除了要实时更新的数据信息外,还包含一个控制复选框,用于启用或停止自动更新。页面源中要更新的布局标签如下:

  <divclass="livecontent">

  <divclass="livecontenttitle"><span>球队</span><span>时间</span>

  <span>解说</span><span>比分</span></div>

  <asp:ScriptManagerID="ScriptManager1"runat="server"></asp:ScriptManager>

  <asp:UpdatePanelID="UpdatePanel1"runat="server">

  <ContentTemplate>

  <divclass="livecontentbody"id="livecontentbody"runat="server"></div>

  <asp:TimerID="Timer1"runat="server"

  Interval=""OnTick="Timer1_Tick"></asp:Timer>

  </ContentTemplate>

  </asp:UpdatePanel>

  </div>

(2)为了模拟直播员录入的比赛信息,在实例中将通过程序填充一些比赛数据,并且需要定义数据容器来承载这些数据,代码如下:

  publicstaticStringBuilder str = newStringBuilder();//比赛内容数据绑定容器

  publicstaticList<string[]> result = newList<string[]>();//直播员输入的比赛数据容器

  publicstaticint Index = -;//比赛信息数据索引

  protectedvoid Page_Load(object sender, EventArgs e)

   {

  if (!IsPostBack)

      {

  //首次加载时填充数据容器

          result.Add(newstring[] { "cl", "11:48", "特里斯坦汤普森两分球进", "0-0" });

          result.Add(newstring[] { "ov", "00:00", "第一节结束", "30-30" });

  //页面加载设置友好提示信息

  this.livecontentbody.InnerHtml =

  "<div class=\"start\">各位观众大家好,比赛已经正式开始!</div>";

     }

   }

注意:

由于篇幅的限制所以代码中只给出了开始数据和结束数据,实际数据总数为20条。

(3)再来实现启用或暂停的复选框功能,代码如下:

  protectedvoid CheckBox1_CheckedChanged(object sender, EventArgs e)

  {

  this.Timer1.Enabled = ((CheckBox)sender).Checked;//用于启用或暂停比赛直播

   }

(4)最后定义Timer定时器定时触发方法的功能,该处理方法将每隔10秒钟进行一次调用,然后在方法中随机生成1到3条数据并填充到容器,最后绑定到页面上,代码如下:

  protectedvoid Timer1_Tick(object sender, EventArgs e)

  {

  Random ran = newRandom();//创建随机类

  int r = ran.Next(, );//生成1-3随机数

  //根据生成的随机数进行循环,并判断总的数据量没有超出循环范围

  for (int i = ; i < r && Index < ; i++)

      {

          Index++;//从0开始

  string[] arr = result[Index];//获取指定索引的数据

  //向绑定容器中第0个位置插入比赛信息,此方式确保最新的数据永远排在最上面

          str.Insert(, "<div class=\"livecontentbodylist\">" +

  "<span><img src=\"images/" + arr[] + ".png\"/></span>" +

  "<span>" + arr[] + "</span>" +

  "<span>" + arr[] + "</span>" +

  "<span>" + arr[] + "</span>" +

  "</div>");

  }

  this.livecontentbody.InnerHtml = str.ToString();//绑定到页面div容器中

  if (Index > )//判断索引值是否超出数据总数

      {

  this.Timer1.Enabled = false;//如果超出则本节结束,停止更新

      }

  }

执行程序,页面加载时将提示友好信息,如图13.6所示,比赛开始后效果如图13.7所示,最后第一节比赛结束后效果如图13.8所示。

图13.6  直播前友好提示信息

图13.7  直播时的赛况信息

图13.8  结束时停止更新

本文摘自明日科技出版的《零基础学asp.net》,转载请注明出处!!!

通过ASP.NET Ajax技术模拟实现NBA比赛文字直播功能的更多相关文章

  1. 使用AJAX技术发送异步请求,HTTP服务端推送

    使用AJAX技术发送异步请求 什么是AJAX AJAX指一步Javascript和XML(Asynchronous JavaScript And XML),它是一些列技术的组合,简单来说AJAX基于X ...

  2. 利用ASP.NET AJAX的Timer讓GridView每隔一段時間做到自動換頁的功能

    最近在討論區看到這個問題,小弟利用asp.net ajax的timer來實作這個功能 利用timer每隔一段時間,讓gridview自動跳頁並且更新gridview的內容 asp.net(c#) Gr ...

  3. ASP.NET AJAX入门系列(1):概述

    经常关注我的Blog的朋友可能注意到了,在我Blog的左边系列文章中,已经移除了对Atlas学习手记系列文章的推荐,因为随着ASP.NET AJAX 1.0 Beta版的发布,它们已经不再适用,为了不 ...

  4. C#/ASP.NET/AJAX

      C#/ASP.NET/AJAX ASP.NET 4.5新特性一:强类型数据绑定(Strongly-Type Data-Bindings) 摘要: 随着ASP.NET 4.5的发布提供了很多的新特性 ...

  5. 【转】【Asp.Net】了解使用 ASP.NET AJAX 进行局部页面更新

    简介Microsoft的 ASP.NET 技术提供了一个面向对象.事件驱动的编程模型,并将其与已编译代码的优势结合起来.但其服务器端的处理模型仍存在技术本身所固有的几点不足: 进行页面更新需要往返服务 ...

  6. Java之Ajax技术

    ajax(asynchronouse javascript and xml) 异步的javascript 和 xml(现在常把xml换成json): ajax是2005年提出的,在2006,2007年 ...

  7. Ajax 技术一

    一.Ajax概述 1.历史起源 1998年,微软公司Outlook Web Access研发小组在当时的IE浏览器中集成了一种技术,可以在客户端无刷新的前提下向服务器端发送Http请求,这门技术称之为 ...

  8. 你真正的了解Ajax?Ajax技术简述

    Ajax技术是目前在浏览器中通过JavaScript脚本可以使用的所有技术的集合.Ajax并没有创造出某种具体的新技术,它所使用的大多数技术都是在很多年以前就已经存在了,然而Ajax以一种崭新的方式来 ...

  9. asp.net ajax检查用户名是否存在代码

    原文  asp.net ajax检查用户名是否存在代码 用户注册时,我们经常需要检查用户名是否存在,本文就是实现无刷新验证用户名 打开开发环境VS 2005,新建项目(或打开现有项目),新建一个Web ...

随机推荐

  1. 洛谷——P3833 [SHOI2012]魔法树

    P3833 [SHOI2012]魔法树 题目背景 SHOI2012 D2T3 题目描述 Harry Potter 新学了一种魔法:可以让改变树上的果子个数.满心欢喜的他找到了一个巨大的果树,来试验他的 ...

  2. .Net防sql注入的方法总结

    #防sql注入的常用方法: 1.服务端对前端传过来的参数值进行类型验证: 2.服务端执行sql,使用参数化传值,而不要使用sql字符串拼接: 3.服务端对前端传过来的数据进行sql关键词过来与检测: ...

  3. 多层gmetad配置

    经实验表明: ①多层gmetad与ganglia版本无关,且可以多版本兼容 ②多层gmetad只有最底层gmetad能保存详细指标,非底层gmetad收集到的都只能是summary信息,当然也许我配置 ...

  4. 【codeforces 510D】Fox And Jumping

    [题目链接]:http://codeforces.com/contest/510/problem/D [题意] 你可以买n种卡片; 每种卡片的花费对应c[i]; 当你拥有了第i种卡片之后; 你可以在任 ...

  5. 【codeforces 514C】Watto and Mechanism(字典树做法)

    [题目链接]:http://codeforces.com/contest/514/problem/C [题意] 给你n个字符串; 然后给你m个询问;->m个字符串 对于每一个询问字符串 你需要在 ...

  6. 敏捷开发系列学习总结(5)——这几招搞定团队协同Coding

    一个团队在一起Coding时,就怕发生这样的事情:同1个文件你改了,我也改了,他也改了,最后怎么同步呢?以前用clearcase时,A把文件checkout了,其他人就不能提交,保证了代码的唯一性.但 ...

  7. hdu 4950

    #include<stdio.h> int main(){ __int64 h,a,b,k,j=0; while(scanf("%I64d%I64d%I64d%I64d" ...

  8. xth的第 12 枚硬币(codevs 1366)

    题目描述 Description 传说 xth 曾经拥有11枚完全相同硬币(你懂得),不过今年呢,rabbit又送了他一 枚硬币.这枚硬币和其他硬币外观相同,只有重量不同,或轻或重.Xth 一不小心, ...

  9. springCloud学习-服务的注册与发现(Eureka)

    1.小记 这段时间有空,把springcloud的知识整理一下,好记性不如烂笔头,也让自己对springcloud有个清晰的认识.此次的整理记录主要借鉴了这位大佬的博客 https://blog.cs ...

  10. Android 开源框架Universal-Image-Loader全然解析(一)--- 基本介绍及使用

    转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303).请尊重他人的辛勤劳动成果,谢谢! 大家好! ...