MS WEB异步页示例疑问???
来源:互联网 发布:数据nba 编辑:程序博客网 时间:2024/05/19 23:28
在MSDN看了MS的ASP.NET 2.0 中的异步页文章,其中试了一下运行效果。发觉其根本没有达到界面效果(异步功能是实现了).
http://www.microsoft.com/china/msdn/library/webservices/asp.net/issuesWickedCodetoc.mspx
数据访问代码如下.
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;public partial class AsyncDataBind : System.Web.UI.Page
{ private SqlConnection _connection;
private SqlCommand _command;
private SqlDataReader _reader; protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Hook PreRenderComplete event for data binding
this.PreRenderComplete += new EventHandler(Page_PreRenderComplete);
AddOnPreRenderCompleteAsync(new BeginEventHandler(BeginAsyncOperation), new EndEventHandler(EndAsyncOperation) ); } }
IAsyncResult BeginAsyncOperation (object sender, EventArgs e, AsyncCallback cb, object state) {
string connect = WebConfigurationManager.ConnectionStrings ["PubsConnectionString"].ConnectionString;
_connection = new SqlConnection(connect);
_connection.Open();
_command = new SqlCommand("SELECT title_id, title, price FROM titles", _connection);
return _command.BeginExecuteReader (cb, state); } void EndAsyncOperation(IAsyncResult ar)
{
_reader = _command.EndExecuteReader(ar);
} protected void Page_PreRenderComplete(object sender, EventArgs e)
{
Output.DataSource = _reader;
Output.DataBind();
}
public override void Dispose()
{ if (_connection != null) _connection.Close();
base.Dispose(); }}
原理不讲了,看MS的帮助就行了。讲一下问题,上面红色的一段在运行时会调用二次。就是因为此二次调用,造成界面数据无法显示:因为_reader中的数据在第一次调用时已全部读取了。指针到最后,第二次调用就会为null.
不明白的就是Page_PreRenderComplete 为什么会调用二次。没办法,只好变通一下。用一个标记来判断是否要进行绑定.代码改成如下就可以正常显示:
bool _isread = false;
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
if(_isread==false)
{
this.GridView1.DataSource = _reader;
GridView1.DataBind();
_isread = true;
}
}
- MS WEB异步页示例疑问???
- ms SqlServer编程的疑问
- Python Web框架Tornado的异步处理代码示例
- MS WEB SKILL
- MS WEB SKILL OK
- MS Ajax 调用 WebService 示例
- 异步套接字示例
- Ajax异步传输示例
- ajax异步请求示例
- Spring mvc异步示例
- 多线程异步处理示例
- Servlet异步处理示例
- Java_JSP2_Servlet3_Servlet文件上传、Servlet异步处理、Servlet web模块简单示例;
- Ms XmlDom 异步装载Xml文件
- Ms XmlDom 异步装载Xml文件
- Ms XmlDom 异步装载Xml文件
- Ms XmlDom 异步装载Xml文件
- Ms XmlDom 异步装载Xml文件
- 网卡问题:Unable to initialize Windows Sockets interface
- PowerDesigner支持自动生成含SQL Server 2000的表和列注释的角本
- 重新温习数据结构一:数组
- C#考试题
- 谈一点C++的感想
- MS WEB异步页示例疑问???
- BLOG开张
- 回学校了,心情 很不一样
- 据说是日本最穷的县--山手县
- 日本:缺陷美女颠覆风潮
- C有关图形处理(转)
- 一个关于嵌入式的网站,收获不小
- C语言编程入门必做题-2~16进制转换
- URL中文参数传递问题