<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<lastBuildDate>Thu, 28 Feb 2008 17:52:30 +0800</lastBuildDate>
<title>Net - czBin's Blog</title>
<link>http://www.czBin.cn/Net.xml</link>
<description>czBin.cn -> Net的技术文章</description>
<item>
<pubDate>Thu, 28 Feb 2008 17:52:30 +0800</pubDate>
<title>ASP.NET2.0导出Word文档(C#导出DOC)</title>
<link>http://www.czBin.cn/.NET.Word.001.php</link>
<description><![CDATA[在网络上看到很多关于ASP.NET导出DOC文档的例子，有的干脆就直接将html页面不做任何处理直接导出为DOC文件，但是那样会有很多错误，例如将<br />
<br />
某些控件显示为图片。我还曾经见过微软为中国某个大公司制作的一个XX系统，导出的DOC文件实际上是某种特殊格式的XML，但是对于这个技术我还<br />
<br />
不是很了解。于是我在网络上收集资料，找到很多种实现方法，一一实验，最后总结出以下经验......<br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/.NET.Word.001.php</guid>   
</item>
<item>
<pubDate>Wed, 28 Nov 2007 02:37:52 +0800</pubDate>
<title>提交后页面走型问题解决</title>
<link>http://www.czBin.cn/NET.Response.001.php</link>
<description><![CDATA[当我们使用Response.Write()输出类似js代码或者html代码时,提交后页面就会出现类似字体改变,表格变形等页面走型问题.<br />
这是因为页面处理了Response.Write()语句后没能正确解释DOCTYPE声明而造成的.<br />
要解决这个问题可以不用Response.Write()语句,改用Page.RegisterStartupScript()<br />
例如:<br />
Response.Write(&quot;&lt;script&gt;alert('修改成功！');&lt;/script&gt;&quot;);<br />
替换成<br />
 Page.RegisterStartupScript(&quot;成功&quot;, &quot;&lt;script&gt;alert('修改成功！');&lt;/script&gt;&quot;);   <br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/NET.Response.001.php</guid>   
</item>
<item>
<pubDate>Mon, 19 Nov 2007 19:40:00 +0800</pubDate>
<title>在ASP.NET中如何用后台代码向页面写HTML代码</title>
<link>http://www.czBin.cn/NET.HTML.001.php</link>
<description><![CDATA[ Literal lt = new Literal();<br />
 lt.Text = &quot;&lt;a href=&quot;http://www.czbin.cn&quot;&gt;czbin的博客&lt;/a&gt;&quot;;   //定义lt中的文本,注意双引号要用&quot;&quot;转义<br />
 form1.Controls.Add(lt);       //将lt中的html代码加入form1标签中(必须是runat=&quot;server&quot;的)<br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/NET.HTML.001.php</guid>   
</item>
<item>
<pubDate>Wed, 14 Nov 2007 02:38:02 +0800</pubDate>
<title>ASP.NET给TextBox控件加上失去焦点事件</title>
<link>http://www.czBin.cn/NET.Contrls.002.php</link>
<description><![CDATA[TextBox1.Attributes.Add(&quot;onfocusout&quot;, &quot;fs();&quot;);//给TextBox1控件加上onfocusout事件,响应代码为js函数fs();<br />
把这段代码加到Page_Load函数中,当TextBox1失去焦点时就会执行JavaScript中的函数fs()<br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/NET.Contrls.002.php</guid>   
</item>
<item>
<pubDate>Tue, 06 Nov 2007 23:42:52 +0800</pubDate>
<title>以C#实现截取SQLSERVER中DateTime时间型字段日期部分</title>
<link>http://www.czBin.cn/NET.C#.DATETIME.001.php</link>
<description><![CDATA[当我们在SQL中创建一个DateTime时间类型的字段时,很多时候这个字段我们只输入日期,而SQL会自动给这个字段里的数据加上小时、分钟和秒。<br />
而当我们用程序读这个DateTime类型字段里面的值的时候得到的就是一个完整的时间格式，这当然不是我们所需要的。以“出生日期”为例，当我们的ASP.NET程序显示这个“出生日期”的时候，我们只希望显示出类似YY-MM-DD的字符串，而假如不在SQL语句中对该字段做相应处理的话将显示出YY-MM-DD HH:MM:SS格式的字符串。而如果在SQL语句中进行处理的话就不能使用&quot;select *&quot;格式直接将所有字段检索出来了，数据表字段比较多的时候可能有点麻烦，所以这个时候我们希望在C#中进行处理。好了，请看示例代码：<br />
数据表P_Info中有一个“出生日期”字段，为DateTime时间型。<br />
在C#中将这个DateTime时间型数据读出并赋值给BirthDay这个变量，以便以后使用。<br />
C#代码：<br />
...//省略数据库连接与SqlDataReader部分,<br />
string BirthDay;<br />
DateTime dt;//定义一个时间类型变量，用以转换得到的时间字符串<br />
if(reader.read())//reader为读取数据用的SqlDataReader<br />
{<br />
dt = Convert.ToDateTime( reader[&quot;出生日期&quot;].ToString().Trim());<br />
 //将数据库读出来的“出生日期”字符串转换成时间类型赋给dt<br />
BirthDay= dt.Year.ToString().Trim() + &quot;-&quot; + dt.Month.ToString().Trim() + &quot;-&quot; + dt.Day.ToString().Trim();<br />
//将时间类型变量dt中的年月日以&quot;-&quot;连接成标准日期类型字符串，并赋给BirthDay<br />
}<br />
怎么样，就这么简单！<br />
<br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/NET.C#.DATETIME.001.php</guid>   
</item>
<item>
<pubDate>Tue, 06 Nov 2007 20:22:42 +0800</pubDate>
<title>ASP.NET2.0下TreeView控件动态生成树型目录示例</title>
<link>http://www.czBin.cn/NET.TreeView.001.php</link>
<description><![CDATA[其实网络上已经有很多ASP.NET下TreeView控件动态生成树型目录的C#代码了，但是很少有人给出VB.NET的代码，貌似做ASP.NET的主流语言就是C#，但是为了方便一些使用VB语言的朋友我专门写了这篇文章，当然C#实现起来基本是差不多的，看懂了这个，改一下语法也就变成了C#。<br />
  从ASP.NET2.0开始，FrameWork就集成了TreeView控件,我们只需要在工具箱的某个选项卡上点右键,点弹出的&quot;选择项&quot;菜单,在新对话框里选择System.Web.UI.WebControls命名空间下的TreeView。点确定。这样在工具箱里我们就会找到TreeView控件。<br />
 将这个控件添加到页面里，可以编辑它的节点，将新的节点添加到TreeView中，并且还可以设置节点的结构，这样生成的TreeView将是一个静态的树型目录，但是往往我们是需要从数据库中读取数据动态生成树型目录的，请看以下的数据表（为方便一些英语不好的朋友，主要关键字都使用中文，请自行更改）：<br />
表名：链接表。<br />
字段：序号|父结点|结点|URL<br />
（序号是该结点的序号，父结点是该结点的父结点的序号，结点为显示出来的TEXT，URL为该结点指向的URL）<br />
代码：.......<br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/NET.TreeView.001.php</guid>   
</item>
<item>
<pubDate>Sun, 04 Nov 2007 01:40:35 +0800</pubDate>
<title>解决ASP.NET读COOKIE乱码问题</title>
<link>http://www.czBin.cn/NET.COOKIES.CODE.001.php</link>
<description><![CDATA[先请大家看以下代码(如果您的COOKIE出现了乱码肯定是这样写的):<br />
以VB.NET为例:<br />
写COOKIE:<br />
Dim acookie As New HttpCookie(user)'定义一个COOKIE,COOKIE名是当前登陆的用户名<br />
acookie.Values.Add(&quot;user&quot;,user)      '给这个COOKIE加一个属性&quot;user&quot;,内容为当前的用户名 <br />
acookie.Values.Add(&quot;pass&quot;, pass)<br />
Response.AppendCookie(acookie)      <br />
读COOKIE:<br />
Dim acookie As HttpCookie = Request.Cookies(user)  'User_Txt是输入用户名的文本框<br />
Session(&quot;user&quot;) =acookie.Values(&quot;user&quot;).ToString.Trim<br />
Session(&quot;pass&quot;) =acookie.Values(&quot;pass&quot;).Trim.Trim<br />
其实这样就忽略编码的问题,正确的写法应该是这样的:<br />
写COOKIE:<br />
Dim acookie As New HttpCookie(user)<br />
acookie.Values.Add(&quot;user&quot;, HttpUtility.UrlEncode(user))   '写COOKIE时进行编码<br />
acookie.Values.Add(&quot;pass&quot;, HttpUtility.UrlEncode(pass)))<br />
Response.AppendCookie(acookie)<br />
读COOKIE:<br />
Dim acookie As HttpCookie = Request.Cookies(user) <br />
Session(&quot;user&quot;) = HttpUtility.UrlDecode(acookie.Values(&quot;user&quot;).ToString.Trim)<br />
Session(&quot;pass&quot;) = HttpUtility.UrlDecode(acookie.Values(&quot;pass&quot;).Trim.Trim)   '读COOKIE时进行解码<br />
这样再读出来的COOKIE值就不会再是乱码了。<br />
题外话:<br />
这段代码是用VB.NET写的,其实我也喜欢用C#,但是之所以还是采用了VB语法,主要是因为懂C#的话我想看VB.NET肯定不会吃力。所以鉴于篇幅原因我就只写了VB代码，至于C#么，COPY回去，自己加个分号，大小写和语法改下就可以执行了。说实话现在的C#和VB.NET的语法真的是没有太大差别了，感觉上好象VB.NET里可以运行的代码，拿到C#里加个分号，改下大小写，再把VB.NET里的&quot;()&quot;改成&quot;[]&quot;（当然函数除外）。然后再把for啊if啊什么一改，基本就可以了，当然C#里类new的时候别忘记加上括号。不知道是不是现在的高级语言的语法都趋于统一了呢？难道这就是编程语言傻瓜化？难道真的哪天我们对着电脑说：“帮我做个网站”，电脑就自己把代码写好了？？？？？？？<br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/NET.COOKIES.CODE.001.php</guid>   
</item>
<item>
<pubDate>Fri, 26 Oct 2007 21:05:01 +0800</pubDate>
<title>用Session传递对象的实例</title>
<link>http://www.czBin.cn/Net.Session.C.001.php</link>
<description><![CDATA[Session作为一种客户端的全局变量其实是弱类型的,大家往往只用它来传递一些字符串的值,事实上Session不仅可以传递字符串,它可以传递任何类型的变量,甚至是对象。如果问这有什么用，那么最简单的用途就是可以简化数据的传递，将用几个Session才能完成的数据传递用一个Session来完成，好了，废话不多说，大家看我的代码吧。。。<br />
首先我有两个页面，第一个页面中有一些输入框，第二个页面上也有一些输入框，当点击第一个页面的“下一页”按扭时进入第二页，当点击第二页的“提交按扭”时将第一页与第二页的数据一起插入到数据库，这个功能基本上就属于“输入向导”吧。<br />
第一页的“下一页”按扭中的处理代码：<br />
  string Sqlstr = &quot;INSERT INTO P_Info(name,Sex) &quot; +<br />
                    &quot;VALUES(@SQL1,@SQL2)&quot;;<br />
            SqlCommand Mycmd = new SqlCommand(Sqlstr, Conn);<br />
                Mycmd.Parameters.AddWithValue(&quot;@SQL1&quot;, Name);<br />
                Mycmd.Parameters.AddWithValue(&quot;@SQL2&quot;, Sex);<br />
               Session[&quot;P_info&quot;] = Mycmd;   //用session保存Mycmd<br />
                Mycmd.Dispose();<br />
 第二页从Session中取出Mycmd的代码:<br />
        SqlCommand Mycmd = new SqlCommand(); <br />
 //定义一个SqlCommand用来接受session里传过来的SqlCommand<br />
        Mycmd = (SqlCommand)Session[&quot;P_info&quot;]; //注意要对session进行强制类型转换<br />
        Mycmd.Connection = Conn;<br />
        Mycmd.ExecuteNonQuery();   //执行这个SqlCommand，实际上就等于执行了第一页的Mycmd<br />
        Mycmd.Dispose();<br />
我的两端代码是用session传递一个SqlCommand的实例，从中可以看出Session其实是非常强大的，因为它实际上是一段内存空间，在这个内存空间中我们可以保存任何类型的数据，包括数组、结构体，甚至是一个类的实例。<br />
<br />
<br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/Net.Session.C.001.php</guid>   
</item>
<item>
<pubDate>Mon, 22 Oct 2007 03:44:08 +0800</pubDate>
<title>.NET中动态添加按钮控件后绑定Click事件之C#实现</title>
<link>http://www.czBin.cn/NET.C#.Click.001.php</link>
<description><![CDATA[首先动态添加一个按钮控件<br />
     <br />
     Button btn_Ok = new Button();<br />
        btn_Ok.ID = &quot;btn_Ok&quot;;    //设置控件ID<br />
        btn_Ok.Text = &quot;确定&quot;;      //设置控件上显示的文本<br />
        btn_Ok.Click += new System.EventHandler(btn_Ok_Click);//将你的按钮的Click事件绑定到btn_Ok_Click函数<br />
<br />
然后构造一个btn_Ok_Click函数,注意函数的格式一定要符合按钮的Click事件响应函数的格式,可以参照其他的按钮的事件响应函数<br />
    protected void btn_Ok_Click(object sender, EventArgs e)<br />
    {<br />
        HttpContext.Current.Response.Redirect(&quot;P_info_job.aspx&quot;);<br />
    }<br />
<br />
    这样当点击btn_OK按钮的时候就会执行btn_Ok_Click中的语句了。<br />
     <br />
<br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/NET.C#.Click.001.php</guid>   
</item>
<item>
<pubDate>Sat, 20 Oct 2007 22:10:48 +0800</pubDate>
<title>DataGrid动态绑定DataTable、分页、编辑的VB.NET代码</title>
<link>http://www.czBin.cn/NET.VB.DataGrid.001.php</link>
<description><![CDATA[刚才发了一个C#的，再发一个VB.NET的，方便大家直接拷贝使用^_^<br />
细节刚才已经介绍过了，我直接贴代码了...<br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/NET.VB.DataGrid.001.php</guid>   
</item>
<item>
<pubDate>Sat, 20 Oct 2007 22:00:22 +0800</pubDate>
<title>DataGrid动态绑定DataTable、分页、编辑的C#代码</title>
<link>http://www.czBin.cn/NET.Base.DataGrid.001.php</link>
<description><![CDATA[绑定：<br />
把这个代码放在你的类里<br />
    public bool BindGrid(DataGrid grid,string Sql)<br />
    {<br />
        try<br />
        {<br />
//Conn为你的连接，因为我的类的close函数总加了Conn.close()所以我在这个函数末尾没有关闭，如果你的类没有这个功能请加上<br />
            SqlCommand myCommand = new SqlCommand(Sql,Conn); <br />
            // 创建一个DataTable<br />
            SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand);<br />
            DataTable myTable = new DataTable();<br />
            myAdapter.Fill(myTable);<br />
            grid.DataSource = myTable;<br />
            grid.DataBind();<br />
            myTable.Dispose();<br />
            myAdapter.Dispose();<br />
            return true;<br />
        }<br />
        catch<br />
        {<br />
            return false;<br />
        }<br />
    }<br />
......<br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/NET.Base.DataGrid.001.php</guid>   
</item>
<item>
<pubDate>Thu, 18 Oct 2007 00:53:21 +0800</pubDate>
<title>ASP.NET2.0服务端控件</title>
<link>http://www.czBin.cn/NET.Base.Controls.001.php</link>
<description><![CDATA[   &lt;div&gt;<br />
        &lt;input id=&quot;Text1&quot; type=&quot;text&quot; /&gt;<br />
        &lt;asp:TextBox ID=&quot;TextBox1&quot; runat=&quot;server&quot;&gt;&lt;/asp:TextBox&gt;<br />
        &lt;/div&gt;<br />
其中有&lt;asp:TextBox  标识的就是服务端控件,由IIS解析生成客户端代码发传送到客户端执行.<br />
 &lt;input id=&quot;Text1&quot; type=&quot;text&quot; /&gt;就是一个传统的表单.<br />
其实最通俗的区别就是在后台代码里可以直接调用服务端控件的属性,方法等.<br />
例如TextBox1.Text.<br /><br /><br />]]></description>
<category>Net</category> 
<guid isPermaLink="true">http://www.czBin.cn/NET.Base.Controls.001.php</guid>   
</item>
</channel>
</rss>