<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[小兔子乖乖 - .NET学习]]></title>
<link>http://blog.campuszp.com/</link>
<description><![CDATA[我不是你的天使~~]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[Rabbit_xxy@163.com(Rabbit)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>小兔子乖乖</title>
	<url>http://blog.campuszp.com/images/logos.gif</url>
	<link>http://blog.campuszp.com/</link>
	<description>小兔子乖乖</description>
</image>

			<item>
			<link>http://blog.campuszp.com/article/1036.htm</link>
			<title><![CDATA[gridview实现全选,反选与删除记录的操作]]></title>
			<author>Rabbit_xxy@163.com(admin)</author>
			<category><![CDATA[.NET学习]]></category>
			<pubDate>Wed,01 Sep 2010 11:31:50 +0800</pubDate>
			<guid>http://blog.campuszp.com/default.asp?id=1036</guid>
		<description><![CDATA[aspx中<br/><br/> &lt;asp:GridView ID=&#34;GridView1&#34; runat=&#34;server&#34; AutoGenerateColumns=&#34;False&#34;&nbsp;&nbsp;DataKeyNames =&#34;MailID&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Columns&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:TemplateField &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ItemTemplate&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:CheckBox ID=&#34;CheckBox1&#34; runat=&#34;server&#34;&nbsp;&nbsp; AutoPostBack =&#34;true&#34; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ItemTemplate&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/asp:TemplateField&gt;&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;&lt;asp:BoundField DataField=&#34;FormAddress&#34; HeaderText=&#34;FormAddress&#34; SortExpression=&#34;FormAddress&#34; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:BoundField DataField=&#34;ToAddress&#34; HeaderText=&#34;ToAddress&#34; SortExpression=&#34;ToAddress&#34; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:BoundField DataField=&#34;Title&#34; HeaderText=&#34;Title&#34; SortExpression=&#34;Title&#34; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:BoundField DataField=&#34;Contents&#34; HeaderText=&#34;Contents&#34; SortExpression=&#34;Contents&#34; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:BoundField DataField=&#34;Times&#34; HeaderText=&#34;Times&#34; SortExpression=&#34;Times&#34; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:CheckBoxField DataField=&#34;ReadFlag&#34; HeaderText=&#34;ReadFlag&#34; SortExpression=&#34;ReadFlag&#34; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:CheckBoxField DataField=&#34;UpFlag&#34; HeaderText=&#34;UpFlag&#34; SortExpression=&#34;UpFlag&#34; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Columns&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/asp:GridView&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:Button ID=&#34;Button1&#34; runat=&#34;server&#34; Text=&#34;全选&#34; OnClick=&#34;Button1_Click&#34; /&gt;&amp;nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:Button ID=&#34;Button3&#34; runat=&#34;server&#34; Text=&#34;返选&#34; OnClick=&#34;Button3_Click&#34; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:Button ID=&#34;Button2&#34; runat=&#34;server&#34; Text=&#34;删除选中的项&#34; OnClick=&#34;Button2_Click&#34; /&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/> <br/><br/>.cs<br/><br/> protected void Page_Load(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!IsPostBack)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetDataBinder();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Button2.Attributes.Add(&#34;onclick&#34;,&#34;return confirm(&#39;你确定要删除所选择的记录么?&#39;)&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected void SetDataBinder()<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string sql = &#34;Sel&#101;ct * from SendMail&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[&#34;StudyConnectionString&#34;].ToString());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.Open();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlDataAdapter da = new SqlDataAdapter(sql ,conn );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataSet ds = new DataSet();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;da.Fill(ds,&#34;table&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GridView1 .DataSource =ds.Tables [&#34;table&#34;];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GridView1.DataBind();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.Close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// 全选记录<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;sender&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;e&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected void Button1_Click(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CheckBox cb;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; GridView1.Rows.Count; i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cb = (CheckBox)GridView1.Rows[i].Cells[0].FindControl(&#34;CheckBox1&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cb.Checked = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// 执行删除操作,删除所选择的项<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;sender&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;e&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected void Button2_Click(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string sql=&#34;(&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; GridView1.Rows.Count; i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl(&#34;CheckBox1&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (cb.Checked == true)<br/>&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;sql = sql + Convert.ToInt32(GridView1.DataKeys[i].Value) + &#34;,&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//去掉最后的逗号,并且加上右手号<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql = sql.Substring(0,sql.Length -1)+&#34;)&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql = &#34;del&#101;te SendMail wh&#101;re MailID in&#34;+sql;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[&#34;StudyConnectionString&#34;].ToString());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.Open();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&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; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlCommand cmd = new SqlCommand(sql, conn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int delcount = Convert.ToInt32(cmd.ExecuteNonQuery());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(&#34;&lt;script&gt;alert(&#39;共删除&#34; + delcount + &#34;条数据&#39;);&lt;/script&gt;&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetDataBinder();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (Exception ex)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(ex.Message);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finally<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.Close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// 反选操作<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;sender&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;e&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected void Button3_Click(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CheckBox cb;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; GridView1.Rows.Count; i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cb = (CheckBox)GridView1.Rows[i].Cells[0].FindControl(&#34;CheckBox1&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (cb.Checked)<br/>&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;cb.Checked = false ;<br/>&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;else<br/>&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;cb.Checked = true ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>]]></description>
		</item>
		
			<item>
			<link>http://blog.campuszp.com/article/1033.htm</link>
			<title><![CDATA[使用日历控件网页中文出现乱码解决方案]]></title>
			<author>Rabbit_xxy@163.com(admin)</author>
			<category><![CDATA[.NET学习]]></category>
			<pubDate>Wed,25 Aug 2010 15:32:46 +0800</pubDate>
			<guid>http://blog.campuszp.com/default.asp?id=1033</guid>
		<description><![CDATA[<strong>使用日历控件网页中文出现乱码解决方案：</strong><br/><br/>网站建议保持utf-8的编码,引用的梅花雨脚本文件请用文本打开，然后另存为utf-8或unicode格式,把web.config中的 &lt;globalization&nbsp;&nbsp;uiCulture= &#34;zh-CN&#34;&nbsp;&nbsp; culture= &#34;zh-CN &#34;fileEncoding= &#34;GB2312 &#34;/&gt; 删掉,再用 &lt;script&nbsp;&nbsp;src&nbsp;&nbsp; = &#34;calendar.js &#34;&nbsp;&nbsp;charset = &#34;gb2312 &#34;&nbsp;&nbsp;type= &#34;text/javascript &#34;&gt; &lt;/script&gt; 引用js,改 &lt;@page...里面的ResponseEncoding= &#34;utf-8 &#34;,就ok了 。<br/><br/><strong>其实主要原因在于：</strong><br/><br/>1、网站默认使用utf-8编码；<br/>2、日历控件使用了gb2312编码；<br/><br/>如果使用&lt;@page...里面的ResponseEncoding= &#34;gb2312&#34;，则整个网页变成gb2312编码方式，与整站编码方式冲突，故只需在引用日历控件js时加上 charset = &#34;gb2312 &#34;即可完美解决问题。]]></description>
		</item>
		
			<item>
			<link>http://blog.campuszp.com/article/1023.htm</link>
			<title><![CDATA[软件开发技术高手转向项目管理者要突破的误区]]></title>
			<author>Rabbit_xxy@163.com(admin)</author>
			<category><![CDATA[.NET学习]]></category>
			<pubDate>Mon,16 Aug 2010 13:59:24 +0800</pubDate>
			<guid>http://blog.campuszp.com/default.asp?id=1023</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;曾经引以自豪的引导某项技能的倡导者，高科技研究的突破者，各种算法、设计模式、架构应用演练成功后的喜悦者。。。<br/><br/>这个是软件开发技术高手。我们做每一项研究和创造都是要有价值的.<br/><br/><br/>&nbsp;&nbsp; 然而软件开发的价值在哪里呢？<br/><br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp; 软件项目管理跟传统的项目管理又有哪些区别呢？&nbsp;&nbsp; <br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp; 从一个开发高手到全面的项目管理者需要哪些突破？<br/>&nbsp;&nbsp; ......<br/><br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp; 在学校我们会为开发而开发、为研究而开发，而工作了，我们需要为价值而开发，为解决我们目标客户的问题而开发，软件的项目管理不像建筑项目管理，软件项目管理是一个高速发展的领域，没有形成真正可行的行业规范、标准，软件是看不见、摸不着的东西，项目过程中会面临着各种角色的各种需求，而我们软件的项目管理者需要雾里看花，权衡利弊，保障客户满意度，最终目标实现，成本又能得到合理的控制，还能赢得口碑获取更多的机会，这个就是一个成功的项目管理者的基本思路和要求。<br/><br/>&nbsp;&nbsp; 从技术高手转为项目高手要突破的几个方面思维<br/><br/> <br/><br/>&nbsp;&nbsp; 1、完成项目开发不是终点，而是起点<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;专业技能往往跟自己打交道、跟电脑打交道就足够了，而项目管理是一个综合的要求，沟通、计划、研发、实施、回款、赢得口碑，而不仅仅是完成项目的开发。软件是看不见摸不着的东西，合同也无法清晰描述很多细节、软件的项目管理过程不但开发而且会有帮助客户理顺、协调目标、解决问题等等<br/><br/>&nbsp;&nbsp; 2、从专业技能思维转向管理思维的综合顾问<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;技术开发高手熟练掌握开发工具，灵活应用各种语言，高智商的应用和创造各种算法、设计模式。用ABC像堆积木一样完成软件开发的工作，这个是研发，对于项目管理者建议大家不要去看那些科班的软件项目管理书籍，软件项目管理需要行业知识、综合能力、心智格局、人际交往、计划授权、还有者各种阅历的综合技能。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 项目管理者应该在项目管理过程中，对内部成员 对外部客户都是能赢得尊重的一个选手。是一个顾问，而不是一个被人使唤的小兵。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 做到这一点，需要转变思维。<br/><br/>&nbsp;&nbsp; 3、“不绝对”的权变思维<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;电脑跟人不同。纯粹的技术高手往往习惯了掌控自如的感觉，项目管理者有客户的需求目标还有团队的利益目标，沟通无处不在，各种角度的思维都会发生各种冲突，我们经常会认为，应该怎样，而客户却不那么认为，客户习惯传统的做法，需要我们照搬到电脑上来实现，客户希望更少的投入解决所有问题等等。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 在项目过程中，我们需要控制项目需求、项目周期、项目金额、项目质量，这四个方面向四匹烈马拉着项目管理者往四个不同的方向跑。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 项目管理者要控制的目标是什么？根本很难绝对，项目管理者需要权衡利弊。出好每一张牌。<br/><br/>&nbsp;&nbsp; <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; （图）<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;尽信书不如无书，项目管理者更需要一些发散思维。<br/><br/><br/>&nbsp;&nbsp; 4、沟通技能要素和目标<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;项目管理者的沟通、调研和协调，是占所有工作比重比较多的。沟通应该为控制项目而沟通，作为乙方，需要过沟通能让客户增加客户投入创造新项目机会、控制项目验收、能够回款是最终的目标。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;项目管理者的沟通，会涉及不同层次的沟通所采用不同的形式和方法、非正式场合沟通的方式、调研的技能和目标、专业沟通的工具：会议、备忘录、计划、需求及需求变更文档等。<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; 5、发现问题、思考问题、解决问题全面承担和挑战的意识<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 我们经常会听到的是问题会很多，解决的方法都事不关己的。推脱责任并不是项目管理者的素质、项目的最终成功，需要的是综合的技能，也需要发现问题、思考问题、解决问题的责任和挑战意识。<br/><br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;6、项目管理者方法论<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目标&nbsp;&nbsp;--》 策略&nbsp;&nbsp;--》行动 --》能力 --》验证 --》改善<br/>&nbsp;&nbsp;&nbsp;&nbsp;方法论很难语言描述，希望更多的跟大家探讨。<br/><br/><br/>&nbsp;&nbsp; 软件行业最缺的就是优秀的项目管理者，如果大家多从行业价值链和企业的生态链思考、培养自己的综合能力和心智格局，高收入一定离各位不远。]]></description>
		</item>
		
			<item>
			<link>http://blog.campuszp.com/article/1013.htm</link>
			<title><![CDATA[Sql Server 2000中CONVERT函数]]></title>
			<author>Rabbit_xxy@163.com(admin)</author>
			<category><![CDATA[.NET学习]]></category>
			<pubDate>Fri,06 Aug 2010 15:42:19 +0800</pubDate>
			<guid>http://blog.campuszp.com/default.asp?id=1013</guid>
		<description><![CDATA[Sql Server 中一个非常强大的日期格式化函数，具体可查看CONVERT函数，希望能够对你有说帮助。<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 0): 05 16 2008 10:57AM<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 1): 05/16/08<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 2): 08.05.16<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 3): 16/05/08<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 4): 16.05.08<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 5): 16-05-08<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 6): 16 05 08<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 7): 05 16, 08<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 8): 10:57:46<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 9): 05 16 2008 10:57:46:827AM<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 10): 05-16-08<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 11): 08/05/16<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 12): 080516<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 13): 16 05 2008 10:57:46:937<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 20): 2008-05-16 10:57:47<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 21): 2008-05-16 10:57:47.157<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 22): 05/16/08 10:57:47 AM<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 23): 2008-05-16<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 24): 10:57:47<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 25): 2008-05-16 10:57:47.250<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 100): 05 16 2008 10:57AM<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 101): 05/16/2008<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 102): 2008.05.16<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 103): 16/05/2008<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 104): 16.05.2008<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 105): 16-05-2008<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 106): 16 05 2008<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 107): 05 16, 2008<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 108): 10:57:49<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 109): 05 16 2008 10:57:49:437AM<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 110): 05-16-2008<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 111): 2008/05/16<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 112): 20080516<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 113): 16 05 2008 10:57:49:513<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 120): 2008-05-16 10:57:49<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 121): 2008-05-16 10:57:49.700<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 126): 2008-05-16T10:57:49.827<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427&nbsp;&nbsp;10:57:49:907AM<br/>Sel&#101;ct CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM ]]></description>
		</item>
		
			<item>
			<link>http://blog.campuszp.com/article/1007.htm</link>
			<title><![CDATA[DIV+CSS 命名规范]]></title>
			<author>Rabbit_xxy@163.com(admin)</author>
			<category><![CDATA[.NET学习]]></category>
			<pubDate>Wed,04 Aug 2010 16:34:42 +0800</pubDate>
			<guid>http://blog.campuszp.com/default.asp?id=1007</guid>
		<description><![CDATA[1.CSS ID 的命名<br/>外　套：　　wrap<br/>主导航：　　mainnav<br/>子导航：　　subnav<br/>页　脚：　　footet<br/>整个页面：　content<br/>页　眉：　　header<br/>页　脚：　　footer<br/>商　标：　　label<br/>标　题：　　title<br/>主导航：　　mainbav（globalnav）<br/>顶导航：　　topnav<br/>边导航：　　sidebar<br/>左导航：　　leftsidebar<br/>右导航：　　rightsidebar<br/>旗　志：　　logo<br/>标　语：　　banner<br/>菜单内容1： menu1 content<br/>菜单容量：　menu container<br/>子菜单：　　submenu<br/>边导航图标：sidebarIcon<br/>注释：　　　note<br/>面包屑：　　breadcrumb(即页面所处位置导航提示）<br/>容器：　　　container<br/>内容：　　　content<br/>搜索：　　　search<br/>登陆：　　　Login<br/>功能区：　　shop(如购物车，收银台)<br/>当前的　　　current<br/><br/>2.另外在编辑样式表时可用的注释可这样写：<br/>&lt;-- Footer --&gt;<br/>内容区<br/>&lt;-- End Footer --&gt;<br/><br/>3.样式文件命名<br/>主要的 master.css<br/>布局，版面 layout.css<br/>专栏 columns.css<br/>文字 font.css<br/>打印样式 print.css<br/>主题 themes.css <br/>]]></description>
		</item>
		
			<item>
			<link>http://blog.campuszp.com/article/1006.htm</link>
			<title><![CDATA[.net工作流]]></title>
			<author>Rabbit_xxy@163.com(admin)</author>
			<category><![CDATA[.NET学习]]></category>
			<pubDate>Tue,03 Aug 2010 18:28:00 +0800</pubDate>
			<guid>http://blog.campuszp.com/default.asp?id=1006</guid>
		<description><![CDATA[1.1对于工作流总体概貌的理解 <br/>这几天一直在看MSDN，整理下自己的思路。 <br/>在.net工作流中，进程通过WorkflowRuntime创建和维护WorkflowInstance.除此而外，WorkflowRuntime可以创建自定义的服务和本地服务（为工作流处理对象设计服务），可以控制从内存中加载和卸载工作流（配合sqlWorkflowPersistenceService就可以实现工作流的持久化）等等。 <br/>现在理解下进程中workflowRuntime，workflowInstance和服务的关系(见附件)。 <br/>这是MSDN中描述服务在workflowRuntime中的执行情况，不过从侧面反映了： <br/>1.workflowInstance由workflowRuntime创建。 <br/>2.服务由addservice（）加载入workflowRuntime中，而与workflowInstance实例无关。 <br/>3.workflowInstance在创建后，自动流动触发activity。在activity中触发service中的事件，转而由workflowRuntime将事件转化为接口上的事件调用（EventHandle）。 <br/>从上面的分析，举个例子来说，就是workflowInstance相当于公司中文档批复的业务流程，而服务就是需要批复的文档以及在文档上要做的操作。而workflowRuntime则是跳出流程和文档，调整两者连接的部门（虚拟，假设有此部门）。 <br/>1.2 对ExternalDataExchangeService服务的理解 <br/>诚如MSDN所说，一个必须添加到工作流运行时引擎才能启用本地服务通信的服务。若要正确地初始化和注册这些服务（我觉得应该是添加到workflowRuntime里服务于workflowInstance的服务）,必需将本地服务添加到ExternalDataExchangeService中。 <br/>因此workflowRuntime,workflowInstance,ExternalDataExchangeService和本地服务的关系是：workflowRuntime承载workflowInstance，ExternalDataExchangeService被添加到workflowRuntime，本地服务被添加到ExternalDataExchangeService中以实现对于譬如SqlWorkflowPersistenceService的初始化。 <br/>还有，就是本地服务必须实现使用 ExternalDataExchangeAttribute 进行修饰的接口。本地服务中的需要定义方法和事件（需要实现ExternalDataEventArgs）供CallExternalMethodActivity和HandleExternalEventActivity使用。 <br/>前者用于工作流实例从外部接收信息，后者用于处理由本地服务引发的事件的工作流通信活动。workflowRuntime会将本地服务上的方法调用转化为workflowInstance上的Event触发。<br/><br/>　　要认识工作流引擎需要了解以下几个要素： <br/>实体(Entity) ：是工作流的主体，是需要随着工作流一起流动的物件(Object)。例如，在一个采购申请批准流程中，实体就是采购申请单；在公文审批流程中，实体就是公文。 <br/>参与者(Participant) ：是各个处理步骤中的责任人，可能是人，也可能是某个职能部门，还可能是某个自动化的设备； <br/>流程定义(Flow Definition) ：是预定义的工作步骤，它规定了实体流动的路线。它可能是完全定义的，即对每种可能的情况都能完全确定下一个参与者，也可能是不完全定义的，需要参与者根据情况决定下一个参与者； <br/><br/><img src="http://blog.campuszp.com/attachments/month_1008/v201083182759.jpg" border="0" alt=""/><br/>]]></description>
		</item>
		
			<item>
			<link>http://blog.campuszp.com/article/986.htm</link>
			<title><![CDATA[服务器不能下载vob文件解决办法]]></title>
			<author>Rabbit_xxy@163.com(admin)</author>
			<category><![CDATA[.NET学习]]></category>
			<pubDate>Wed,21 Jul 2010 15:26:30 +0800</pubDate>
			<guid>http://blog.campuszp.com/default.asp?id=986</guid>
		<description><![CDATA[双击“Internet 信息服务”，右键点击“默认网站”-----“属性”， 选择“HTTP头”，点“文件类型”，“新类型”，扩展名中写“.ceb”，MIME中写“application/x-ceb”。再点“新类型”，扩展名中写“.vob”，MIME中写“application/x-vob”。设置好后，就可以使用http方式下载了。]]></description>
		</item>
		
			<item>
			<link>http://blog.campuszp.com/article/982.htm</link>
			<title><![CDATA[无法创建或打开应用程序且本地web服务器上没有安装所需的组件]]></title>
			<author>Rabbit_xxy@163.com(admin)</author>
			<category><![CDATA[.NET学习]]></category>
			<pubDate>Thu,15 Jul 2010 14:42:57 +0800</pubDate>
			<guid>http://blog.campuszp.com/default.asp?id=982</guid>
		<description><![CDATA[最近做一个asp.net的项目的时候遇到一件诡异的事情。这个项目在创建的时候那个位置用VS2003打开，什么问题都没有，但是如果复制到另外一个位置再修改了IIS虚拟目录的地址后，就打不开了，提示“无法创建或打开应用程序且本地web服务器上没有安装所需的组件”，按照VS2003的帮助仔细核查，IIS和.Net的安装都没有任何问题。google了一下，不少人出现了这个问题，一般来说除了VS2003帮助里的原因外，大部分问题都是.csproj文件里面Web项目并没有指向正确的IIS虚拟目录，修改之即可。可是我的明明指向了正确的虚拟目录啊，而且换到创建时候的那个目录下就可以了。<br/><br/>郁闷之下换了虚拟目录的名字吧，同时修改.csproj文件和IIS的设置，再试，居然打开了，看来是VS给做什么缓存了。找啊找，在系统盘的Documents and Settings\%Your Account%\VSWebCache下面发现了缓存文件，删除之，再换到新位置使用旧的虚拟目录名称，顺利搞定。<br/><br/>另外如果VS2003提示“项目刷新失败，无法从服务器中检索文件夹信息的解决办法”的话，一般是你用了SVN管理源代码造成的。svn软件会在程序的每个目录下生成一个.svn的文件夹来记录文件的历史信息，可惜常规方法是创建不了以小数点开头的文件的,VS2003在缓存文件的时候就出错了，严格的说是VS2003的一个Bug。解决方法就是不要创建小数点开头的目录啦。比如在TortoiseSVN中，在“常规设置”中勾选“使用_svn目录替代.svn目录”即可。<br/>]]></description>
		</item>
		
			<item>
			<link>http://blog.campuszp.com/article/980.htm</link>
			<title><![CDATA[找回你删掉并清空回收站的东西]]></title>
			<author>Rabbit_xxy@163.com(admin)</author>
			<category><![CDATA[.NET学习]]></category>
			<pubDate>Wed,14 Jul 2010 16:12:27 +0800</pubDate>
			<guid>http://blog.campuszp.com/default.asp?id=980</guid>
		<description><![CDATA[步骤： <br/><br/>1、单击“开始——运行，然后输入regedit （打开注册表） <br/><br/>2、依次展开：HEKEY——LOCAL——MACHIME/SOFTWARE/microsoft/WINDOWS/ CURRENTVERSION/EXPLORER/DESKTOP/NAMESPACE 在左边空白外点击“新建” <br/><br/>，选择：“主键”(在左边就是“项”，所谓的主键就是这个)，把它命名为“645FFO40——5081——101B——9F08——00AA002F954E” <br/><br/>再把右边的“默认”的主键的键值设为“回收站”，然后退出注册表。就OK啦。 <br/><br/>3、要重启计算机。 <br/><br/>只要机器没有运行过磁盘整理。系统完好.任何时候的文件都可以找回来。<br/>]]></description>
		</item>
		
			<item>
			<link>http://blog.campuszp.com/article/979.htm</link>
			<title><![CDATA[无法在web服务器上启动调试。调试失败，因为没有启用集成windows身份验证]]></title>
			<author>Rabbit_xxy@163.com(admin)</author>
			<category><![CDATA[.NET学习]]></category>
			<pubDate>Wed,14 Jul 2010 14:48:57 +0800</pubDate>
			<guid>http://blog.campuszp.com/default.asp?id=979</guid>
		<description><![CDATA[无法在web服务器上启动调试。调试失败，因为没有启用集成windows身份验证<br/><br/><br/>C#中ASP.NET Web应用程序编译时的错误：无法在web服务器上启动调试。调试失败，因为没有启用集成windows身份验证。<br/><br/>解决:打开IIS，在IIS里查看站点信息(属性)，选择“目录安全性”，点击“匿名访问和身份验证控制”右边的“编辑..”，选中“集成Windows身份验证”选项即可<br/>]]></description>
		</item>
		
</channel>
</rss>
