推荐.NET教程: ASP.NET C# 开发环境 Ajax教程 控件开发 统计报表 数据库 Web服务 安装部署 CommunityServer NHibernate DataGrid/GridView 实用代码 VS2005
示例源码 MVC/三层 SqlHelper 入门源码 开源 CMS Ajax/Atlas C#.net 毕业设计 源码 经典代码 商业 本站作品 持久层 随书源码 WebService 英文/汉化 Asp.net2.0

    由于项目中引入了JQuery,不方便再引用YUI。所以依照 Session variables without cookies 原理,直接用JQuery实现如下:

    场景:主页面 (emo_windowname.html)一个IFrame(framePreview),在页面加载或者单击按钮时,让IFrame加载一个页面(http://...../正文.html).

    条件:正文.html 预告加入脚本,或者使用HttpModule加入脚本:

Code

    这样,在主页面中,就可以通过window.name把高度取过来,然后设置一下 framePreview的高度。

代码如下:

主页面代码

 

示例目标页面:

Code
posted @ 2009-06-16 16:07 阿牛 阅读(1699) | 评论 (10)编辑
     摘要: 我的技术要点:  1、用两个表,其中一个是表头,另一个是表格做表体  2、两个表格使用相同的百分比宽度  3、在IE下,如果列溢出,则采用 ... 来表示溢出,FF下自动隐藏  4、采用JQuery,把表头的列宽,设置到表体第一列。  5、在窗体大小改变时,自动设置表头的容器宽度为表体的宽度。 效果如图:  不复杂,代码如下:[代码] 阅读全文
posted @ 2009-06-12 16:54 阿牛 阅读(75) | 评论 (1)编辑

    网上很多地方介绍了如何用SharePoint.OpenDocument打开基于WebDAV协议的Word文档,可是打开后,如果对文档进行一些设置操作,却苦于没有Word对象。

    我这里实现了得到Word.Application对象,可以进行设置文档域一类的操作了。

    可是,我本来想得到文档的保存事件并激活我的处理函数,目前这里卡住了,貌似没有出路。谁有?

 

Code
posted @ 2009-06-02 17:54 阿牛 阅读(198) | 评论 (0)编辑

      
 
Constraints
-  n取值范围为1到1,000,000,000(含)
Examples
0)  
      1

Returns: 0


1)  
      1729

Returns: 1
1729=1^3+12^3
1729=9^3+10^3


2)  
      475574

Returns: 27

因为题中大量使用3次方计算,这里我们也可以减少重复计算。原理公式为:

(n + 1)^2 = n^2 + 2n + 2
(n + 1)^3 = n^3 + 3n^2 + 3n + 1

所以我的实现算法如下:

 

Code

 

 

posted @ 2009-06-02 00:21 阿牛 阅读(1298) | 评论 (11)编辑
     摘要: 上一篇文章 "无侵入方面编程-用HttpModule+SoapExtension监视页面执行参数(一)"中,我们实现了监视每个页面的执行情况和调用WebService的简单信息。 这次我们继续深入一下SoapExtension的应用,在不改变Soap的WSDL文档的情况下,配合在Dotnet编写的WebService站点配置我们编写的SoapExtension,来穿透传输我们自定义的数据对象。由于... 阅读全文
posted @ 2009-06-01 18:00 阿牛 阅读(1040) | 评论 (2)编辑
     摘要: 先简单介绍一下项目吧,我们这个项目是用VS2003开发的,老早一个项目。WEB前端机+业务处理(WebService层)+数据库分别布置在不同的计算机上。 现在老总有一个需求,要统计出每个页面的执行时间,以及每次调用过哪些WebService方法,调用的时间等参数。可行的方案有好多,但我感觉使用HttpModule+SoapExtension,可以不在改变目标系统源码的基础上,完成这项工作。也许有... 阅读全文
posted @ 2009-05-22 10:51 阿牛 阅读(1465) | 评论 (6)编辑

    在网速慢或者网站反应慢的情况下,如果提交表单需要超过5秒的时间还未提交成功,多数人会重新点击提交。这样不仅造成错误的数据,还会加剧服务器的压力。

    通过使用HttpModule,我们可以在表单处理前,检测一些标志,从而防止用户重复提交数据,再通过一些接口,让用户自己来处理重复提交时,应该如何告诉用户。

    通过使用HttpModule,我们也可以在客户端表单提交时,使用DIV覆盖住表单,从UI层防止用户再次单击提交(用户直接F5管不了)。

    这种方法使用简单,直接把脚本和图片放在指定的目录中,然后在Web.config中添加Module

 

Code

 

    下面是实现代码:

 

Code

 

     用到的JS文件:/js/MaskDIV.js

Code
posted @ 2009-05-21 17:41 阿牛 阅读(2208) | 评论 (18)编辑
     摘要: 效果图:用法:[代码][代码]http://files.cnblogs.com/evlon/EvlonQQMenu.js 阅读全文
posted @ 2009-04-22 17:52 阿牛 阅读(247) | 评论 (3)编辑

    接触到一个老的项目,里面大量使用OleDbConnection进行数据库操作,在执行SQL块语句时,对它的顺序参数、命名参数很不了解。据说不能使用命名参数,但我这里试验了一下,好像是可以的,只是对参数的顺序还是有要求。看看你能知道下面的输出结果吗?

    测试环境:OleDbConnection+Oracle10G   

using System;
using System.Data;
using System.Data.OleDb;
using System.Data.OracleClient;
using System.Text.RegularExpressions;
using System.Text;
using System.Collections;

using System.Diagnostics;
namespace ConsoleApplication1
{
    
/// <summary>
    
/// Class1 的摘要说明。
    
/// </summary>
    class Program
    {


        
private void Test1()
        {
            
using(OleDbConnection conn = new OleDbConnection("Provider=OraOLEDB.Oracle;User ID=oauser;Data Source=oa163;Password=1234;Persist Security Info=True;"))
            {
                
string sql = "begin  delete from B; insert into B(A,B) values(:a,:b); end;";        //很正常的

                OleDbCommand cmd 
= new OleDbCommand(sql,conn);

                cmd.Parameters.Add(
"a",OleDbType.VarChar,100);
                cmd.Parameters[
"a"].Value = "a";

                cmd.Parameters.Add(
"b",OleDbType.VarChar,100);
                cmd.Parameters[
"b"].Value = "b";

                cmd.CommandType 
= CommandType.Text;
                conn.Open();
                cmd.ExecuteNonQuery();

                cmd.CommandText 
= "select a,b from B";
                
using(OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow))
                {
                    Debug.Assert(dr.Read());

                    Debug.Assert(dr.GetString(dr.GetOrdinal(
"a")) == "a");        //正常结果
                    Debug.Assert(dr.GetString(dr.GetOrdinal("b")) == "b");
                }
                

            }
        }

        
private void Test2()
        {
            
using(OleDbConnection conn = new OleDbConnection("Provider=OraOLEDB.Oracle;User ID=oauser;Data Source=oa163;Password=1234;Persist Security Info=True;"))
            {
                
string sql = "begin delete from B; insert into B(B,A) values(:b,:a); end;";  //这里换一下顺序 

                OleDbCommand cmd 
= new OleDbCommand(sql,conn);

                cmd.Parameters.Add(
"a",OleDbType.VarChar,100);
                cmd.Parameters[
"a"].Value = "a";

                cmd.Parameters.Add(
"b",OleDbType.VarChar,100);
                cmd.Parameters[
"b"].Value = "b";

                cmd.CommandType 
= CommandType.Text;
                conn.Open();
                cmd.ExecuteNonQuery();

                cmd.CommandText 
= "select a,b from B";
                
using(OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow))
                {
                    Debug.Assert(dr.Read());

                    Debug.Assert(dr.GetString(dr.GetOrdinal(
"a")) == "b");                //结果不一样了吧
                    Debug.Assert(dr.GetString(dr.GetOrdinal("b")) == "a");
                }
                

            }
        }

        
private void Test3()
        {
            
using(OleDbConnection conn = new OleDbConnection("Provider=OraOLEDB.Oracle;User ID=oauser;Data Source=oa163;Password=1234;Persist Security Info=True;"))
            {
                
string sql = "declare v_exists int := 1;" +
                    
"begin " +
                    
"   delete from B;" +
                    
"    select count(*) into v_exists from B where a=:a and b=:b and rownum < 2; " + //很正常的
                    "    if (v_exists = 0) then " +
                    
"        insert into B(A,B) values(:a,:b); " +
                    
"    end if; " +
                    
"end;"

                OleDbCommand cmd 
= new OleDbCommand(sql,conn);

                cmd.Parameters.Add(
"a",OleDbType.VarChar,100);
                cmd.Parameters[
"a"].Value = "a";

                cmd.Parameters.Add(
"b",OleDbType.VarChar,100);
                cmd.Parameters[
"b"].Value = "b";

                cmd.CommandType 
= CommandType.Text;
                conn.Open();
                cmd.ExecuteNonQuery();
                
                cmd.CommandText 
= "select a,b from B";
                
using(OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow))
                {
                    Debug.Assert(dr.Read());

                    Debug.Assert(dr.GetString(dr.GetOrdinal(
"a")) == "a");                //正常结果
                    Debug.Assert(dr.GetString(dr.GetOrdinal("b")) == "b");
                }

            }

        }
        
private void Test4()
        {
            
using(OleDbConnection conn = new OleDbConnection("Provider=OraOLEDB.Oracle;User ID=oauser;Data Source=oa163;Password=1234;Persist Security Info=True;"))
            {
                
string sql = "declare v_exists int := 1;" +
                    
"begin " +
                    
"   delete from B;" +
                    
"    select count(*) into v_exists from B where b=:b and a=:a and rownum < 2; " +  //  b=:b and a=:a 换一下顺序
                    "    if (v_exists = 0) then " +
                    
"        insert into B(A,B) values(:a,:b); " +
                    
"    end if; " +
                    
"end;"

                OleDbCommand cmd 
= new OleDbCommand(sql,conn);

                cmd.Parameters.Add(
"a",OleDbType.VarChar,100);
                cmd.Parameters[
"a"].Value = "a";

                cmd.Parameters.Add(
"b",OleDbType.VarChar,100);
                cmd.Parameters[
"b"].Value = "b";

                cmd.CommandType 
= CommandType.Text;
                conn.Open();
                cmd.ExecuteNonQuery();
                
                cmd.CommandText 
= "select a,b from B";
                
using(OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow))
                {
                    Debug.Assert(dr.Read());

                    Debug.Assert(dr.GetString(dr.GetOrdinal(
"a")) == "b");                //结果不一样了吧
                    Debug.Assert(dr.GetString(dr.GetOrdinal("b")) == "a");
                }

            }

        }

        
/// <summary>
        
/// 应用程序的主入口点。
        
/// </summary>
        [STAThread]
        
static void Main(string[] args)
        {
            
//
            
// TODO: 在此处添加代码以启动应用程序
            
//

            
try
            {
                Program prog 
= new Program();

                prog.Test1();
                prog.Test2();
                prog.Test3();
                prog.Test4();

            }
            
catch(Exception exp)
            {
                Console.WriteLine(exp.ToString());
            }
            
finally
            {
                Console.ReadLine();
            
            } 
        }
    }
}
    看起来,在OleClient中使用块语句,还是有可能的。但愿9G下不会出问题。
posted @ 2009-04-02 10:08 阿牛 阅读(1751) | 评论 (11)编辑

一个数据缓存,一般由数据来源,缓存方案,缓存读取来完成,现在有了匿名函数,可以把获取数据来源变为匿名函数。这样就可以直接声明一个缓存:

protected static CacheManager<Company> companyCache = new CacheManager<Company>(new SmsDatabaseCache<Company>(), (key) =>
             {
                 
return SmsDatabase.Instance.Context.Company.Where(c => c.ShortNumber == (string)key).SingleOrDefault();
             });

SmsDatabaseCache是一个缓存方案,还可以使用SimpleCache,TimeoutCache等实现了ICache接口的类,因为我的ICacheManager从ICache继承,所以还可以实现级连缓存哟,例如:

SmsDatebaseCache是一个依SmsDatabase.Instance.Context的缓存方案,在LinqContextDispose时,会进行清空数据操作。
SmsDatabaseCache

实现代码如下:
缓存代码
posted @ 2009-03-19 00:57 阿牛 阅读(1581) | 评论 (2)编辑