﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-网站开发-随笔分类-Asp.net 2.0</title><link>http://www.blogjava.net/ljy032/category/16973.html</link><description>asp.net</description><language>zh-cn</language><lastBuildDate>Thu, 27 Dec 2007 09:14:40 GMT</lastBuildDate><pubDate>Thu, 27 Dec 2007 09:14:40 GMT</pubDate><ttl>60</ttl><item><title>解决downlist 等优先极高于其它控件，浮在其它控件上面</title><link>http://www.blogjava.net/ljy032/archive/2007/12/26/170583.html</link><dc:creator>风雨兼程</dc:creator><author>风雨兼程</author><pubDate>Wed, 26 Dec 2007 06:35:00 GMT</pubDate><guid>http://www.blogjava.net/ljy032/archive/2007/12/26/170583.html</guid><wfw:comment>http://www.blogjava.net/ljy032/comments/170583.html</wfw:comment><comments>http://www.blogjava.net/ljy032/archive/2007/12/26/170583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ljy032/comments/commentRss/170583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ljy032/services/trackbacks/170583.html</trackback:ping><description><![CDATA[&nbsp;&lt;iframe style="position:absolute;z-index:9;width:expression(this.nextSibling.offsetWidth);height:expression(this.nextSibling.offsetHeight);top:expression(this.nextSibling.offsetTop);left:expression(this.nextSibling.offsetLeft);" frameborder="0" &gt;&lt;/iframe&gt;<br />
&nbsp; &lt;div id="divTool" onmouseover="javascript:showdiv123()" onmouseout="javascript:HiddivTool()" class="class_title"&nbsp; style="display:none"&gt;<br />
&lt;table width="100" border="0"&nbsp; align="center" cellpadding="0" cellspacing="0"&gt;<br />
&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;td height="20" colspan="2" bgcolor="ffffff" style="width: 100px" &gt;&amp;nbsp;&amp;nbsp;&lt;span class="t1" style="cursor:hand" name="layout/AddPage.aspx" onclick="javascript:openMyPage(this)"&gt;More tools&lt;/span&gt;&lt;/td&gt;<br />
&nbsp; &lt;/tr&gt; <br />
&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;td height="20" colspan="2"&nbsp; bgcolor="ffffff"&nbsp; style="width: 100px"&gt;&amp;nbsp;&amp;nbsp;&lt;a href="#"&gt;About this tools&lt;/a&gt;&lt;/td&gt;<br />
&nbsp; &lt;/tr&gt;&lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;td height="8" colspan="2" bgcolor="ffffff" style="width: 100px"&gt;&lt;/td&gt;<br />
&nbsp; &lt;/tr&gt; <br />
&nbsp; <br />
&nbsp; &lt;/table&gt;<br />
&lt;/div&gt;
<img src ="http://www.blogjava.net/ljy032/aggbug/170583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ljy032/" target="_blank">风雨兼程</a> 2007-12-26 14:35 <a href="http://www.blogjava.net/ljy032/archive/2007/12/26/170583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>框架怎样实现高度随内容自动增高</title><link>http://www.blogjava.net/ljy032/archive/2007/04/29/114626.html</link><dc:creator>风雨兼程</dc:creator><author>风雨兼程</author><pubDate>Sun, 29 Apr 2007 10:03:00 GMT</pubDate><guid>http://www.blogjava.net/ljy032/archive/2007/04/29/114626.html</guid><wfw:comment>http://www.blogjava.net/ljy032/comments/114626.html</wfw:comment><comments>http://www.blogjava.net/ljy032/archive/2007/04/29/114626.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ljy032/comments/commentRss/114626.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ljy032/services/trackbacks/114626.html</trackback:ping><description><![CDATA[<p>main.htm:</p>
<p>&lt;html&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;head&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta&nbsp; http-equiv='Content-Type'&nbsp; content='text/html;&nbsp; charset=gb2312' /&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta&nbsp; name='author'&nbsp; content='F.R.Huang(meizz梅花雪)//www.meizz.com' /&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;iframe自适应加载的页面高度&lt;/title&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;/head&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;body&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div&gt;&lt;iframe src="child.htm"&gt;&lt;/iframe&gt;&lt;/div&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/body&gt;<br>&lt;/html&gt;</p>
<p>child.htm:</p>
<p>&lt;html&gt;&nbsp; <br>&lt;head&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;meta&nbsp; http-equiv='Content-Type'&nbsp; content='text/html;&nbsp; charset=gb2312' /&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;meta&nbsp; name='author'&nbsp; content='F.R.Huang(meizz梅花雪)//www.meizz.com' /&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;title&gt;iframe&nbsp; 自适应其加载的网页(多浏览器兼容)&lt;/title&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;!--<br>&nbsp;&nbsp;&nbsp; function iframeAutoFit()<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(window!=parent)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var a = parent.document.getElementsByTagName("IFRAME");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var i=0; i&lt;a.length; i++) //author:meizz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(a[i].contentWindow==window)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var h1=0, h2=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i].parentNode.style.height = a[i].offsetHeight +"px";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i].style.height = "10px";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(document.documentElement&amp;&amp;document.documentElement.scrollHeight)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h1=document.documentElement.scrollHeight;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(document.body) h2=document.body.scrollHeight;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var h=Math.max(h1, h2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(document.all) {h += 4;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(window.opera) {h += 1;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i].style.height = a[i].parentNode.style.height = h +"px";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (ex){}<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; if(window.attachEvent)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.attachEvent("onload",&nbsp; iframeAutoFit);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //window.attachEvent("onresize",&nbsp; iframeAutoFit);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; else if(window.addEventListener)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.addEventListener('load',&nbsp; iframeAutoFit,&nbsp; false);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //window.addEventListener('resize',&nbsp; iframeAutoFit,&nbsp; false);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; //--&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/script&gt;&nbsp; <br>&lt;/head&gt;&nbsp; <br>&lt;body&gt;<br>&nbsp;&nbsp;&nbsp; &lt;table border="1" width="200" style="height: 400px; background-color: yellow"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;iframe&nbsp; 自适应其加载的网页(多浏览器兼容，支持XHTML)&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br>&lt;/body&gt;&nbsp; <br>&lt;/html&gt;</p>
<p>&nbsp;很多人反应在IE7里使用它会死机，那是因为在自适应高度时触发了 window.onresize 事件，而这个事件又去调用这个调整 &lt;iframe&gt; 高度的函数，产生了死循环调用。</p>
<img src ="http://www.blogjava.net/ljy032/aggbug/114626.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ljy032/" target="_blank">风雨兼程</a> 2007-04-29 18:03 <a href="http://www.blogjava.net/ljy032/archive/2007/04/29/114626.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web的桌面提醒（Popup） </title><link>http://www.blogjava.net/ljy032/archive/2006/11/07/79655.html</link><dc:creator>风雨兼程</dc:creator><author>风雨兼程</author><pubDate>Tue, 07 Nov 2006 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/ljy032/archive/2006/11/07/79655.html</guid><wfw:comment>http://www.blogjava.net/ljy032/comments/79655.html</wfw:comment><comments>http://www.blogjava.net/ljy032/archive/2006/11/07/79655.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ljy032/comments/commentRss/79655.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ljy032/services/trackbacks/79655.html</trackback:ping><description><![CDATA[
		<p>大多数Windows程序都有桌面提醒（Popup）功能，如Msn Messenger，Outlook2003，FoxMail，SharpReader等，对用户来说可以非常的方便最新的信息。</p>
		<p>在Web中借用IE5.5+的Popup，也可以实现类似的功能，在<a href="http://www.cnforums.net/">CnForums1.2</a>中新增了一种特性就是类似于Outlook2003一样，当有新帖子/私人留言时就有Popup提示，如图：<br /><img height="98" hspace="5" src="http://cnblogs.com/images/cnblogs_com/dotey/Snap2.jpg" width="348" align="baseline" />现在就技术问题介绍一下： </p>
		<p>一，什么是Popup</p>
		<p style="TEXT-INDENT: 2em">在IE5.5+中开始支持的Popup窗口有很多很特别的特性： 
</p>
		<ul>
				<li>Popup窗口可以超出浏览器窗口区域； 
</li>
				<li>可以不用担心被下拉框、flash、Iframe等这些东西遮挡； 
</li>
				<li>即时窗口没有焦点，Popup窗口也可以弹出并显示 
</li>
				<li>一个Popup窗口打开后，当在它的区域以外点击或者另一个Popup窗口被打开时都会自动关闭； 
</li>
				<li>Popup窗口是没有焦点的； 
</li>
				<li>用户不能改变Popup窗口大小； 
</li>
				<li>Popup窗口中的内容是不能被选择的； 
</li>
				<li>...... </li>
		</ul>
		<p> 只是Web下的Popup比起Windows中的Popup还是弱一些，但是已经够用了。Msdn上对Popup有非常详细的介绍“<a onmousedown="return clk(this,'res',1)" href="http://msdn.microsoft.com/workshop/author/om/popup_overview.asp" target="_blank"><font color="#cc0033">Using</font><font color="#0000cc"> the </font><font color="#cc0033">Popup</font><font color="#0000cc"></font><font color="#cc0033">Object</font><font color="#0000cc"> (Internet Explorer - DHTML)</font></a><font size="-1"></font>”</p>
		<p>二，怎么创建一个Popup</p>
		<pre class="clsCode" autohilite="1">Msdn上的示例代码：</pre>
		<pre class="clsCode" autohilite="1">
				<pre>
						<div>
								<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
								<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align="top" />
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 创建Popup对象</span>
								<span style="COLOR: #008000">
										<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align="top" />
								</span>
								<span style="COLOR: #0000ff">var</span>
								<span style="COLOR: #000000"> oPopup </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> window.createPopup();
<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align="top" /></span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> Popup对象和Window对象一样，里面包含了一个完整的HTML文档</span>
								<span style="COLOR: #008000">
										<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align="top" />
								</span>
								<span style="COLOR: #0000ff">var</span>
								<span style="COLOR: #000000"> oPopupBody </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> oPopup.document.body;
<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align="top" /><img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align="top" /></span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 在Body中插入HTML</span>
								<span style="COLOR: #008000">
										<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align="top" />
								</span>
								<span style="COLOR: #000000">oPopupBody.innerHTML </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">
								</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">Display some &lt;B&gt;HTML&lt;/B&gt; here.</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">;
<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align="top" /></span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 设置显示的位置、大小、参照物</span>
								<span style="COLOR: #008000">
										<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align="top" />
								</span>
								<span style="COLOR: #000000">oPopup.show(</span>
								<span style="COLOR: #000000">100</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">100</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">200</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">50</span>
								<span style="COLOR: #000000">, document.body);
<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align="top" /></span>
						</div>
				</pre>
		</pre>
		<p>三，Popup的显示</p>
		<p>多个Popup不能共存（Popup中创建Popup除外），所以web中的Popup不方便像Msn Messenger的Popup提示那样“爬楼梯”，所以最简单有效的方法就是像Outlook2003的Popup一样，逐个Popup提醒。<br />（参考WebMessenger的实现）用Js建个队列，将需要Popup提示的内容都放在队列中，用一个定时器，定时从队列中取一个Popup，每个Popup显示7秒。</p>
		<p>四，怎么知道有新帖子</p>
		<p>在Web程序中，只能通过“拉”的技术，即定时向服务器发送请求——通过定时刷新或者是xmlhttp的Get。<br />我们需要有个时间戳来记录最后请求时间，这样就好根据这个时间戳来获取时间戳之后的帖子。<br />如果每次根据时间戳来获取最新帖子，服务器负荷比较大，因为并不是每次请求都有新帖子的，优化一下，再给每个在线用户设置有无新帖子、有无新留言的状态位，当发表新帖子后更新每个人的“有无新帖”状态位。这样每次请求时先判断有没有新帖子，如果有新帖子，才获取所有帖子的标题和内容简要。</p>
		<p>五，具体实现</p>
		<p>客户端代码：<a href="http://webuc.net/MyProject/Popup/popup.htm">http://webuc.net/MyProject/Popup/popup.htm</a><br /><a href="http://webuc.net/MyProject/Popup/popup.rar">http://webuc.net/MyProject/Popup/popup.rar</a></p>
		<p>和论坛程序的结合：<br />demo: <a href="http://bbs.openlab.net.cn/">http://bbs.openlab.net.cn</a> (登录后有新帖子即提示(IE5.5+))<br /><a href="http://bbs.openlab.net.cn/PostAttachment.aspx?PostID=376725">http://bbs.openlab.net.cn/PostAttachment.aspx?PostID=376725</a></p>
		<p>参考文章：<a id="viewpost.ascx_TitleUrl" href="http://webuc.net/dotey/archive/2004/06/30/1117.aspx">无限菜单之 xml+popup 版(IE5.5+)</a></p>
<img src ="http://www.blogjava.net/ljy032/aggbug/79655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ljy032/" target="_blank">风雨兼程</a> 2006-11-07 17:32 <a href="http://www.blogjava.net/ljy032/archive/2006/11/07/79655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>asp.net2.0中使用客户端回调实现无刷新应用! </title><link>http://www.blogjava.net/ljy032/archive/2006/11/07/79607.html</link><dc:creator>风雨兼程</dc:creator><author>风雨兼程</author><pubDate>Tue, 07 Nov 2006 06:59:00 GMT</pubDate><guid>http://www.blogjava.net/ljy032/archive/2006/11/07/79607.html</guid><wfw:comment>http://www.blogjava.net/ljy032/comments/79607.html</wfw:comment><comments>http://www.blogjava.net/ljy032/archive/2006/11/07/79607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ljy032/comments/commentRss/79607.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ljy032/services/trackbacks/79607.html</trackback:ping><description><![CDATA[
		<p>在asp.net1.1中我们可以通过JS调用Web服务来实现无刷新应用,现在asp.net2.0可以用Client Callback的方法实现,这样变得更加方便和容易使用了.客户端回调功能的实现需要两步: <br />1.为控件或页面实现ICallbackEventHandler接口,该接口有一个方法public string RaiseCallbackEvent(string eventArgument),这个方法的原理是接收客户端发送过来的参数,然后返回一个结果字符串给客户端进行处理.例如: <br />public partial class ShowReview_ascx : ICallbackEventHandler <br />{ <br />    public string RaiseCallbackEvent(string eventArgument) <br />    { <br />        int reviewId = int.Parse(eventArgument); <br />        Discussion discussion = AspNetCommerce.DiscussionManager.GetDiscussion(reviewId); <br />        StringBuilder sb = new StringBuilder(); <br />        sb.AppendFormat("&lt;table class='{0}&gt;", "ShowReview_ascx_DisTable"); <br />        foreach (DiscussionItem item in discussion) <br />        { <br />            //输出html <br />        } <br />        sb.Append("&lt;/table&gt;"); <br />        return sb.ToString(); <br />    } <br />} <br />该方法接收客户端的传来的一个参数,转换为 reviewId,根据reviewId查询出相关数据以html形式返回给客户端. <br />2.实现两个客户端脚本,并使用Page.GetCallbackEventReference说明客户端如何处理返回结果. <br />例如: <br />Page.GetCallbackEventReference(this, "topicid", "HandleResultFromServer", "context", "HandleErrorResultFromServer") <br />this表示实现ICallbackEventHandler的控件的实例, <br />topicid表示客户端传入的字符串参数数 <br />HandleResultFromServer表示处理成功调用后的结果的客户端脚本函数名 <br />context表示回调的启动方法处与处理回调结果的方法之间的传递参数 <br />HandleErrorResultFromServer表示处理失败调用后的结果的客户端脚本函数名 <br />部分客户端脚本如: <br />    void Page_Load(object sender, EventArgs e) <br />    { <br />        if (!IsPostBack || !this.EnableViewState) <br />        { <br />            StringBuilder sb = new StringBuilder(); <br />            sb.Append("function loadtree(topicid){"); <br />            sb.Append("var targetImg = document.all('img_'+topicid);"); <br />            sb.Append("var targetDiv = document.all('tr_'+topicid);"); <br />            sb.Append("if (targetDiv.style.display != 'block'){"); <br />            sb.Append("targetDiv.style.display = \"block\";"); <br />            sb.AppendFormat("targetImg.src = \"{0}\";", AspNetCommerce.CommerceContext.GetThemesImagePathForImgTag("ShowReview_ascx/Expand-Open.gif")); <br />            sb.Append("targetImg.alt = \"点击收回\";"); <br />            sb.Append("var context = topicid;"); <br />            sb.AppendFormat("{0}", Page.GetCallbackEventReference(this, "topicid", "HandleResultFromServer", "context", "HandleErrorResultFromServer")); <br />            sb.Append("}else{"); <br />            sb.Append("targetDiv.style.display = \"none\";"); <br />            sb.AppendFormat("targetImg.src = \"{0}\";", AspNetCommerce.CommerceContext.GetThemesImagePathForImgTag("ShowReview_ascx/Expand-Closed.gif")); <br />            sb.Append("targetImg.alt = \"点击查看讨论\";"); <br />            sb.Append("}"); <br />            sb.Append("}"); <br />            sb.Append("function HandleResultFromServer(result,context)"); <br />            sb.Append("{"); <br />            sb.Append("var targetTd = document.all('td_'+context);"); <br />            sb.Append("targetTd.innerHTML = result"); <br />            //sb.Append("alert(result);"); <br />            sb.Append("}"); <br />            sb.Append("function HandleErrorResultFromServer(result,context)"); <br />            sb.Append("{"); <br />            sb.Append("var targetTd = document.all('td_'+context);"); <br />            sb.AppendFormat("targetTd.innerHTML = '&lt;font color=red&gt;{0}&lt;/font&gt;'", <br />                "数据读错误,请重新再试或通知管理员!"); <br />            sb.Append("}"); <br />            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "ClientCallBack", sb.ToString(), true); <br />        } <br />    } </p>
<img src ="http://www.blogjava.net/ljy032/aggbug/79607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ljy032/" target="_blank">风雨兼程</a> 2006-11-07 14:59 <a href="http://www.blogjava.net/ljy032/archive/2006/11/07/79607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Asp.Net Forums中对.Net中序列化和反序列化的应用 </title><link>http://www.blogjava.net/ljy032/archive/2006/11/07/79603.html</link><dc:creator>风雨兼程</dc:creator><author>风雨兼程</author><pubDate>Tue, 07 Nov 2006 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/ljy032/archive/2006/11/07/79603.html</guid><wfw:comment>http://www.blogjava.net/ljy032/comments/79603.html</wfw:comment><comments>http://www.blogjava.net/ljy032/archive/2006/11/07/79603.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ljy032/comments/commentRss/79603.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ljy032/services/trackbacks/79603.html</trackback:ping><description><![CDATA[
		<p>在Forums中，有些内容是不固定的，例如用户资料，除了一些基本资料，可能还要有一些其他资料信息，例如MSN、个人主页、签名档等，一般对于这样的都是每一个属性对应于数据库中的一个字段。但是如果以后我们因为需要增加一些属性，例如QQ号、Blog地址等，如果还是用这种增加数据表字段的方法，那么将会频繁的修改数据库表结构、存储过程、数据库访问的程序。</p>
		<p>或许您也遇到过类似问题，看Forums中是怎么借用.Net的序列化和反序列化来解决的：<br />例如我需要在用户资料里面增加QQ号这个属性，那么我只需要在User类中增加一个属性<br />public String QQIM <br />{<br />    get { return GetExtendedAttribute("QQIM"); }<br />    set { SetExtendedAttribute("QQIM", value); }<br />}<br />不需要修改数据库表结构，不需要修改存储过程，连数据库访问的程序都不需要动。</p>
		<p>其具体实现的主要代码：<br /></p>
		<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
				<div>
						<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> 首先新建在User类中新建一个NameValueCollection对象，将这些扩展属性都保存在NameValueCollection对象中</span>
						<span style="COLOR: #008000">
								<br />
								<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
						</span>
						<span style="COLOR: #000000">NameValueCollection extendedAttributes </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> NameValueCollection(); <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" /></span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> 从NameValueCollection集合中取纪录</span>
						<span style="COLOR: #008000">
								<br />
								<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
						</span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">string</span>
						<span style="COLOR: #000000"> GetExtendedAttribute(</span>
						<span style="COLOR: #0000ff">string</span>
						<span style="COLOR: #000000"> name)     <br /><img id="Codehighlighter1_222_357_Open_Image" onclick="this.style.display='none'; Codehighlighter1_222_357_Open_Text.style.display='none'; Codehighlighter1_222_357_Closed_Image.style.display='inline'; Codehighlighter1_222_357_Closed_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><img id="Codehighlighter1_222_357_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_222_357_Closed_Text.style.display='none'; Codehighlighter1_222_357_Open_Image.style.display='inline'; Codehighlighter1_222_357_Open_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /></span>
						<span id="Codehighlighter1_222_357_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img height="20" src="http://www.cnblogs.com/Images/dot.gif" width="15" />
						</span>
						<span id="Codehighlighter1_222_357_Open_Text">
								<span style="COLOR: #000000">{ <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #0000ff">string</span>
								<span style="COLOR: #000000"> returnValue </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> extendedAttributes[name]; <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000"> (returnValue    </span>
								<span style="COLOR: #000000">==</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">) <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">string</span>
								<span style="COLOR: #000000">.Empty; <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #0000ff">else</span>
								<span style="COLOR: #000000">
										<br />
										<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> returnValue; <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" width="11" align="top" />}</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
								<br />
								<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
						</span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> 设置扩展属性的在NameValueCollection中的键值和值</span>
						<span style="COLOR: #008000">
								<br />
								<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
						</span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> SetExtendedAttribute(</span>
						<span style="COLOR: #0000ff">string</span>
						<span style="COLOR: #000000">    name, </span>
						<span style="COLOR: #0000ff">string</span>
						<span style="COLOR: #000000"> value)     <br /><img id="Codehighlighter1_458_498_Open_Image" onclick="this.style.display='none'; Codehighlighter1_458_498_Open_Text.style.display='none'; Codehighlighter1_458_498_Closed_Image.style.display='inline'; Codehighlighter1_458_498_Closed_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><img id="Codehighlighter1_458_498_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_458_498_Closed_Text.style.display='none'; Codehighlighter1_458_498_Open_Image.style.display='inline'; Codehighlighter1_458_498_Open_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /></span>
						<span id="Codehighlighter1_458_498_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img height="20" src="http://www.cnblogs.com/Images/dot.gif" width="15" />
						</span>
						<span id="Codehighlighter1_458_498_Open_Text">
								<span style="COLOR: #000000">{ <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    extendedAttributes[name] </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> value; <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" width="11" align="top" />}</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
								<br />
								<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
						</span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> 将extendedAttributes对象（前面定义的用来保存所有的用户扩展信息的NameValueCollection对象）序列化为内存流 <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" /></span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> 可以用来保存到数据库中</span>
						<span style="COLOR: #008000">
								<br />
								<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
						</span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">byte</span>
						<span style="COLOR: #000000">[] SerializeExtendedAttributes()     <br /><img id="Codehighlighter1_635_1074_Open_Image" onclick="this.style.display='none'; Codehighlighter1_635_1074_Open_Text.style.display='none'; Codehighlighter1_635_1074_Closed_Image.style.display='inline'; Codehighlighter1_635_1074_Closed_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><img id="Codehighlighter1_635_1074_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_635_1074_Closed_Text.style.display='none'; Codehighlighter1_635_1074_Open_Image.style.display='inline'; Codehighlighter1_635_1074_Open_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /></span>
						<span id="Codehighlighter1_635_1074_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img height="20" src="http://www.cnblogs.com/Images/dot.gif" width="15" />
						</span>
						<span id="Codehighlighter1_635_1074_Open_Text">
								<span style="COLOR: #000000">{ <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 序列化对象</span>
								<span style="COLOR: #008000">
										<br />
										<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />
								</span>
								<span style="COLOR: #000000">    BinaryFormatter    binaryFormatter    </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> BinaryFormatter(); <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 创建一个内存流，序列化后保存在其中</span>
								<span style="COLOR: #008000">
										<br />
										<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />
								</span>
								<span style="COLOR: #000000">    MemoryStream ms    </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> MemoryStream(); <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #0000ff">byte</span>
								<span style="COLOR: #000000">[] b; <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 将extendedAttributes对象（里面保存了所有的用户扩展信息）序列化为内存流 <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #008000">// <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /></span>
								<span style="COLOR: #000000">    binaryFormatter.Serialize(ms, extendedAttributes); <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 设置内存流的起始位置 <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #008000">// <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /></span>
								<span style="COLOR: #000000">    ms.Position    </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">; <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />         <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 读入到 byte 数组 <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #008000">// <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /></span>
								<span style="COLOR: #000000">    b </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">    </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000">    Byte[ms.Length]; <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    ms.Read(b, </span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">, b.Length); <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    ms.Close(); <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> b; <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" width="11" align="top" />}</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
								<br />
								<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
						</span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> 反序列化extendedAttributes对象的内容 <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" /></span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> 从数据库中读取出来的</span>
						<span style="COLOR: #008000">
								<br />
								<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
						</span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> DeserializeExtendedAttributes(</span>
						<span style="COLOR: #0000ff">byte</span>
						<span style="COLOR: #000000">[] serializedExtendedAttributes)  <br /><img id="Codehighlighter1_1202_1686_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1202_1686_Open_Text.style.display='none'; Codehighlighter1_1202_1686_Closed_Image.style.display='inline'; Codehighlighter1_1202_1686_Closed_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><img id="Codehighlighter1_1202_1686_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1202_1686_Closed_Text.style.display='none'; Codehighlighter1_1202_1686_Open_Image.style.display='inline'; Codehighlighter1_1202_1686_Open_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /></span>
						<span id="Codehighlighter1_1202_1686_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img height="20" src="http://www.cnblogs.com/Images/dot.gif" width="15" />
						</span>
						<span id="Codehighlighter1_1202_1686_Open_Text">
								<span style="COLOR: #000000">{ <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000"> (serializedExtendedAttributes.Length    </span>
								<span style="COLOR: #000000">==</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">) <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000">; <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #0000ff">try</span>
								<span style="COLOR: #000000">     <br /><img id="Codehighlighter1_1277_1668_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1277_1668_Open_Text.style.display='none'; Codehighlighter1_1277_1668_Closed_Image.style.display='inline'; Codehighlighter1_1277_1668_Closed_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" width="11" align="top" /><img id="Codehighlighter1_1277_1668_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1277_1668_Closed_Text.style.display='none'; Codehighlighter1_1277_1668_Open_Image.style.display='inline'; Codehighlighter1_1277_1668_Open_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" width="11" align="top" />    </span>
								<span id="Codehighlighter1_1277_1668_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img height="20" src="http://www.cnblogs.com/Images/dot.gif" width="15" />
								</span>
								<span id="Codehighlighter1_1277_1668_Open_Text">
										<span style="COLOR: #000000">{ <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    BinaryFormatter    binaryFormatter    </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> BinaryFormatter(); <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    MemoryStream ms    </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> MemoryStream(); <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000"> 将 byte 数组到内存流 <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
										<span style="COLOR: #008000">// <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /></span>
										<span style="COLOR: #000000">    ms.Write(serializedExtendedAttributes, </span>
										<span style="COLOR: #000000">0</span>
										<span style="COLOR: #000000">, serializedExtendedAttributes.Length); <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000"> 将内存流的位置到最开始位置 <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
										<span style="COLOR: #008000">// <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /></span>
										<span style="COLOR: #000000">    ms.Position    </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">0</span>
										<span style="COLOR: #000000">; <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000"> 反序列化成NameValueCollection对象，创建出与原对象完全相同的副本 <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    </span>
										<span style="COLOR: #008000">// <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /></span>
										<span style="COLOR: #000000">    extendedAttributes </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> (NameValueCollection) binaryFormatter.Deserialize(ms); <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" /><br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />    ms.Close(); <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" width="11" align="top" />    }</span>
								</span>
								<span style="COLOR: #000000">  <br /><img id="Codehighlighter1_1681_1682_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1681_1682_Open_Text.style.display='none'; Codehighlighter1_1681_1682_Closed_Image.style.display='inline'; Codehighlighter1_1681_1682_Closed_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" width="11" align="top" /><img id="Codehighlighter1_1681_1682_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1681_1682_Closed_Text.style.display='none'; Codehighlighter1_1681_1682_Open_Image.style.display='inline'; Codehighlighter1_1681_1682_Open_Text.style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" width="11" align="top" />    </span>
								<span style="COLOR: #0000ff">catch</span>
								<span style="COLOR: #000000">    </span>
								<span id="Codehighlighter1_1681_1682_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img height="20" src="http://www.cnblogs.com/Images/dot.gif" width="15" />
								</span>
								<span id="Codehighlighter1_1681_1682_Open_Text">
										<span style="COLOR: #000000">{}</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" width="11" align="top" />     <br /><img height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" width="11" align="top" />}</span>
						</span>
				</div>
		</div>
		<p>实质上序列化机制是将类的值转化为一个一般的（即连续的）字节流，然后就可以将该流保存到数据库的某个字段中（在数据库中forums_UserProfile表中有一个字段“StringNameValues varbinary(7500)”）。读取的过程对对象进行反序列化时，创建出与原对象完全相同的副本。</p>
		<p>
				<strong>注意一般这类属性在数据库中是不能被检索到的，并且要这些属性能被序列化。</strong>
		</p>
<img src ="http://www.blogjava.net/ljy032/aggbug/79603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ljy032/" target="_blank">风雨兼程</a> 2006-11-07 14:27 <a href="http://www.blogjava.net/ljy032/archive/2006/11/07/79603.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>