Steven Xiao's blog

远行者需要智慧,更需要耐心! 工欲善其事,必先利其器。 授之鱼,不如授之渔。

博客园 首页 新随笔 联系 订阅 管理
  33 Posts :: 10 Stories :: 91 Comments :: 3 Trackbacks

2009年5月16日 #

 

C#语言规范 3.0版:  文件位于  Visual Studio 2008 安装目录下的 VC#\Specifications\2052 目录中,文件名为: CSharp Language Specification.doc

C#语言规范2.0版:  文件位于  Visual Studio 2008 安装目录下的 VC#\Specifications\2052 目录中,文件名为: C# Language Specification 2.0.doc,另外此目录下还包含有C#语言规范1.2版

目录2052: 表示安装的是中文简体版

如果您安装的是英文版则目录名称为: 1033

 

posted @ 2009-05-16 23:45 Steven Xiao 阅读(149) | 评论 (0)编辑

2009年3月30日 #

之前利用dotnetbar控件做了个winform小程序:分享一个DotNetBar做的三层架构的winForm程序 ,感觉这个控件做出来的界面的确漂亮(用的是破解的dll,嘿嘿,当然本人的目的纯粹是用于实验和学习),现分享利用它来制作具有Office 2007风格界面的视频教程,如界面风格如下图所示:

 

 

 

dotnetbar视频教程下载地址:(如下载地址失效了,请留言,因为此视频文件是放网络硬盘上,失效的话有可能是提取码失效了)

 

教程.rar

 

视频教程的示例源代码:/Files/xiaoxijin/DotNetBarStudy.rar

 

 

 

posted @ 2009-03-30 23:46 Steven Xiao 阅读(912) | 评论 (12)编辑

2009年3月8日 #

XMLHttpRequest对象的属性:

1.readyState: 只读属性,目前状态的长整数,值4表示请求处理完成
2.responseBody: 只读属性,取得伺服器的回应,传回非符号位元组的阵列
3.responseSteam: 只读属性,取得伺服器的回应,传回IStream资料流物件
4.responseText: 只读属性,取得伺服器的回应,传回字串
5.responseXML: 只读属性,取得伺服器的回应,传回XML DOM物件
6.status: 只读属性,取得HTTP状态码,例如:200,302等
7.statusText: 只读属性,取得HTTP状态信息字串,例如OK
8.onreadystatechange: 只读属性,执行readyState属性改变的事件处理,设定处理的程序

----------------------------------------
readyState属性的状态值有:
0 尚未初始化,即尚未呼叫open()方法
1 目前正在载入中,即HTTP请求已经准备好,但是尚未呼叫send()方法,但已调用open()方法
2 载入完成,并且已经将HTTP请求送出,伺服器正在处理,发送数据调用send()方法以后
3 伺服器正在处理HTTP请求中
4 已经成功回应HTTP请求,客户端可以执行进一步处理
----------------------------------------


XMLHttpRequest对象的方法:

1.about(): 取消目前的HTTP请求
2.getAllResponseHeaders(): 取得全部HTTP标头的内容
3.getResponseHeader(HeaderName): 取得全部HTTP标头名称的内容
4.open(method,url,async,userid,pwd):开启HTTP请求:method:"GET"||"POST",async:true || false 例如:xmlhttp.open("GET",url,false);
5.send(): 传送HTTP请求到伺服器
6.setRequestHeader(HeaderName,value):使用者自订的HTTP标头资料

 

========================

一个示例:

1. default.aspx

<head runat="server">
    <title>javascript测试</title>
    
 <script  language="javascript"  type="text/javascript">
 

var httpRequest;

//创建XMLHttpRequest对象
function createXMLHttpRequest() {
    if (window.XMLHttpRequest) {
        //IE7,mozilla,safari
        httpRequest = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        //ie5,ie6,找出最新版的MSXML剖析器
        var msxmls = ["MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
        for (var i = 0; i < msxmls.length; i++) {
            try {
                httpRequest = new ActiveXObject(msxmls[i]);
                break;
            }
            catch (e) {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
    }

    return httpRequest;

}


var currentobj;
function showTime(obj) {
    currentobj = obj;
    document.getElementById(obj).innerHTML = "正在读取时间......";

    sendRequest("Search.aspx?code=" + Math.random());

}

 

function sendRequest(url) {
        createXMLHttpRequest();

        httpRequest.onreadystatechange = processRequest;

       httpRequest.open("GET", url, false);
       httpRequest.send();   

}


function processRequest() {

    if (httpRequest.readyState == 4) {
        if (httpRequest.status == 200) {
            document.getElementById(currentobj).innerHTML = httpRequest.responseText;
            // alert(httpRequest.responseText);
        }
        else {
            alert("取当前的时间失败!");
        }
    }

}

 

 

</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input id="Button1" type="button" value="button" onclick="showTime('span1')" />      
       <span id="span1"></span>
    </div>
    </form>
</body>
</html>

 

2. Search.aspx文件中只保留最上面一句:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Search.aspx.cs" Inherits="wawaEshop.WebSite.Search" %>

 

Search.aspx.cs文件:

protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(DateTime.Now.ToString());
        }

posted @ 2009-03-08 22:14 Steven Xiao 阅读(139) | 评论 (0)编辑

2009年3月7日 #

--------------------------------------------------------------------------------

declare @PageIndex as int

declare @PageSize as int

set @PageIndex = 2 --当前的页面索引号
set @PageSize = 10  --每页要显示的记录数

SELECT *
FROM
( SELECT ROW_NUMBER() OVER (ORDER BY uid asc )AS Row,  UserName,TrueName,Email FROM wawa_user ) as tempTable
WHERE Row between (@PageIndex - 1) * @PageSize + 1 and @PageIndex*@PageSize

--------------------------------------------------------------------------------

在sql 2005里增加了 ROW_NUMBER() 函数,作用是: 返回结果集分区内行的序列号,每个分区的第一行从 1 开始。

它的使用方法为:

ROW_NUMBER ( ) OVER ( [ <partition_by_clause> ] <order_by_clause> )

<partition_by_clause>

将 From 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。

<order_by_clause>

确定将 ROW_NUMBER 值分配给分区中的行的顺序

 

 

 

posted @ 2009-03-07 17:04 Steven Xiao 阅读(228) | 评论 (4)编辑

今天在一QQ技术群有朋友问: 他在web用户控件中(.ascx)中放了一个dropdownlist控件,一个textbox控件和一个button控件。

现在把此web用户控件添加到一.aspx页面中.要实现单击用户控件中的button控件把搜索出来的结果数据绑定到.aspx页面的gridview控件上去,如何实现呢?

如果gridview控件是放在.ascx文件中的话,那我们直接把搜索出来的数据绑定到它上面就行了。但现在gridview是放在.aspx文件里,也就是说web用户控件要如何才能访问母页面的控件,把数据绑定到母页面的控件上去?

解决方法:

1.先在.aspx页面的后台文件.aspx.cs中添加一个绑定数据的方法,代码如下:

public void BindSearchDataToGridView(string ddlvalue,string txtValue)

{

//ddlvalue 为用户控件中dropdownlist控件的值

//txtValue 为用户控件中textbox控件的值

//通过传进来的参数去查询数据,然后绑定到gridview控件上

//在这里写上绑定数据的方法

}

 

2.在web用户控件中实现button控件的方法代码如下:

     protected void btnSearch_Click(object sender, EventArgs e)
        {
            System.Web.UI.Page motherPage = this.Page;
            Type pageType = motherPage.GetType();

             //这里用到了反射
            System.Reflection.MethodInfo mi = pageType.GetMethod("BindSearchDataToGridView"); //"BindSearchDataToGridView"为.aspx页面文件的方法
            string txtValue= TextBox1.Text;
            string ddlvalue= DropDownList1.SelectedValue.ToString();
            mi.Invoke(motherPage, new object[] { ddlvalue, txtValue});
        }

 

 

 

 

 

posted @ 2009-03-07 15:55 Steven Xiao 阅读(496) | 评论 (2)编辑

2009年2月14日 #

来自InfoQ: http://www.infoq.com/cn/articles/programmer-interview

 

这里大多数问题的答案都没有对错之分!

你可以把我的这些问题作为引子,展开讨论。例如下面有个问题是使用静态方法或是单例的缘由。如果那个面试的就此展开长篇大论,那他很有可能是个聪明能干的家伙!如果他一脸茫然的看着你,发出这种声音,很明显这就是只狒狒了。同样,想知道一个数是不是2的乘方也有很多方法,不过要是面试的人想用mod运算符,嗯……你知道我的意思吧。(你不知道也没关系,来根香蕉?)

需求

  1. 你能给出一些非功能性(或者质量)需求的例子么?
  2. 如果客户需要高性能、使用极其方便而又高度安全,你会给他什么建议?
  3. 你能给出一些用来描述需求的不同技术么?它们各自适用于什么场景?
  4. 需求跟踪是什么意思?什么是向前追溯,什么是向后追溯?
  5. 你喜欢用什么工具跟踪需求?
  6. 你怎么看待需求变化?它是好是坏?给出你的理由。
  7. 你怎样研究需求,发现需求?有哪些资源可以用到?
  8. 你怎么给需求制定优先级?有哪些技术?
  9. 在需求过程中,用户、客户、开发人员各自的职责是什么?
  10. 你怎么对待不完整或是令人费解的需求?

功能设计

  1. 在功能设计中有哪些隐喻?给出几个成功的例子。
  2. 如果有些功能的执行时间很长,怎么能让用户感觉不到太长的等待?
  3. 如果用户必须要在一个很小的区域内,从一个常常的列表中选择多个条目,你会用什么控件?
  4. 有哪些方法可以保证数据项的完整?
  5. 建立系统原型有哪些技术?
  6. 应用程序怎样建立对用户行为的预期?给出一些例子。
  7. 如何入手设计一组数量庞大而又复杂的特性,你能举出一些设计思路吗?
  8. 有一个列表,其中有10个元素,每个元素都有20个字段可以编辑,你怎样设计这种情况?如果是1000个元素,每个元素有3个字段呢?
  9. 用不同的颜色对一段文本中的文字标记高亮,这种做法有什么问题?
  10. Web环境和Windows环境各有些什么限制?

技术设计

  1. 什么是低耦合和高聚合?封装原则又是什么意思?
  2. 在Web应用中,你怎样避免几个人编辑同一段数据所造成的冲突?
  3. 你知道设计模式吗?你用过哪些设计模式?在什么场合下用的?
  4. 是否了解什么是无状态的业务层?长事务如何与之相适应?
  5. 在搭建一个架构,或是技术设计时,你用过几种图?
  6. 在N层架构中都有哪些层?它们各自的职责是什么?
  7. 有哪些方法可以确保架构中数据的正确和健壮?
  8. 面向对象设计和面向组件设计有哪些不同之处?
  9. 怎样在数据库中对用户授权、用户配置、权限管理这几项功能建模?
  10. 怎样按照等级制度给动物王国(包括各种物种和各自的行为)建模?

程序设计

  1. 你怎样保证你的代码可以处理各种错误事件?
  2. 解释一下什么是测试驱动开发,举出极限编程中的一些原则。
  3. 看别人代码的时候,你最关心什么地方?
  4. 什么时候使用抽象类,什么时候使用接口?
  5. 除了IDE以外,你还喜欢哪些必不可少的工具?
  6. 你怎么保证代码执行速度快,而又不出问题?
  7. 什么时候用多态,什么时候用委派?
  8. 什么时候使用带有静态成员的类,什么时候使用单例?
  9. 你在代码里面怎么提前处理需求的变化?给一些例子。
  10. 描述一下实现一段代码的过程,从需求到最终交付。

算法

  1. 怎样知道一个数字是不是2的乘方?怎样判断一个数是不是奇数?
  2. 怎样找出链表中间的元素?
  3. 怎样改变10,000个静态HTML页面中所有电话号码的格式?
  4. 举出一个你所用过的递归的例子。
  5. 在散列表和排序后的列表中找一个元素,哪个查找速度最快?
  6. 不管是书、杂志还是网络,你从中所学到的最后一点算法知识是什么?
  7. 怎样把字符串反转?你能不用临时的字符串么?
  8. 你愿意用什么类型的语言来编写复杂的算法?
  9. 有一个数组,里面是从1到1,000,000的整数,其中有一个数字出现了两次,你怎么找出那个重复的数字?
  10. 你知道“旅行商问题(Traveling Salesman Problem)”么?

数据结构

  1. 怎样在内存中实现伦敦地铁的结构?
  2. 怎样以最有效的方式在数据库中存储颜色值?
  3. 队列和堆栈区别是什么?
  4. 用堆或者栈存储数据的区别是什么?
  5. 怎样在数据库中存储N维向量?
  6. 你倾向于用哪种类型的语言编写复杂的数据结构?
  7. 21的二进制值是什么?十六制值呢?
  8. 不管是书、杂志还是网络,你从中所学到的最后一点数据结构的知识是什么?
  9. 怎样在XML文档中存储足球比赛结果(包括队伍和比分)?
  10. 有哪些文本格式可以保存Unicode字符?

测试

  1. 什么是回归测试?怎样知道新引入的变化没有给现有的功能造成破坏?
  2. 如果业务层和数据层之间有依赖关系,你该怎么写单元测试?
  3. 你用哪些工具测试代码质量?
  4. 在产品部署之后,你最常碰到的是什么类型的问题?
  5. 什么是代码覆盖率?有多少种代码覆盖率?
  6. 功能测试和探索性测试的区别是什么?你怎么对网站进行测试?
  7. 测试套件、测试用例、测试计划,这三者之间的区别是什么?你怎么组织测试?
  8. 要对电子商务网站做冒烟测试,你会做哪些类型的测试?
  9. 客户在验收测试中会发现不满意的东西,怎样减少这种情况的发生?
  10. 你去年在测试和质量保证方面学到了哪些东西?

维护

  1. 你用哪些工具在维护阶段对产品进行监控?
  2. 要想对一个正在产品环境中被使用的产品进行升级,该注意哪些重要事项?
  3. 如果在一个庞大的文件中有错误,而代码又无法逐步跟踪,你怎么找出错误?
  4. 你怎样保证代码中的变化不会影响产品的其他部分?
  5. 你怎样为产品编写技术文档?
  6. 你用过哪些方式保证软件产品容易维护?
  7. 怎样在产品运行的环境中进行系统调试?
  8. 什么是负载均衡?负载均衡的方式有哪些种?
  9. 为什么在应用程序的生命周期中,软件维护费用所占的份额最高?
  10. 再造工程(re-engineering)和逆向工程(reverse engineering)的区别是什么?

配置管理

  1. 你知道配置管理中基线的含义么?怎样把项目中某个重要的时刻冻结?
  2. 你一般会把哪些东西纳入版本控制?
  3. 怎样可以保证团队中每个人都知道谁改变了哪些东西?
  4. Tag和Branch的区别是什么?在什么情况下该使用tag,什么时候用branch?
  5. 怎样管理技术文档——如产品架构文档——的变化?
  6. 你用什么工具管理项目中所有数字信息的状态?你最喜欢哪种工具?
  7. 如果客户想要对一款已经发布的产品做出变动,你怎么处理?
  8. 版本管理和发布管理有什么差异?
  9. 对文本文件的变化和二进制文件的变化进行管理,这二者有什么不同?
  10. 同时处理多个变更请求,或是同时进行增量开发和维护,这种事情你怎么看待?

项目管理

  1. 范围、时间、成本,这三项中哪些是可以由客户控制的?
  2. 谁该对项目中所要付出的一切做出估算?谁有权设置最后期限?
  3. 减少交付的次数,或是减少每个每个交付中的工作量,你喜欢哪种做法?
  4. 你喜欢用哪种图来跟踪项目进度?
  5. 迭代和增量的区别在哪里?
  6. 试着解释一下风险管理中用到的实践。风险该如何管理?
  7. 你喜欢任务分解还是滚动式计划?
  8. 你需要哪些东西帮助你判断项目是否符合时间要求,在预算范围内运作?
  9. DSDM、Prince2、Scrum,这三者之间有哪些区别?
  10. 如果客户想要的东西太多,你在范围和时间上怎样跟他达成一致呢?

阅读英文原文100 Interview Questions for Software Developers

posted @ 2009-02-14 22:32 Steven Xiao 阅读(170) | 评论 (4)编辑

2009年1月9日 #

这个小程序是用DotNetBar.dll做的界面,用了三层架构,对于要想学习三层架构的朋友是个不错的学习示例.

数据库是Access的,因为是个小系统,是帮朋友做的.

数据库的打开密码为:admin888

系统的登录用户名:admin 密码:admin

源码(vs.net 2008)下载地址:/Files/xiaoxijin/MoreBeautiful.rar

 对于使用vs.net 2005的同学,解决方法是,先在vs.net 2005新建个空的解决方案,然后把程序的项目一个一个添加进去就行了(因为这个程序还是用.net 2.0编写的)

 

 

 


 

 

 

 

posted @ 2009-01-09 23:30 Steven Xiao 阅读(938) | 评论 (17)编辑

2008年11月6日 #

如下图所示效果:

1.图1给链接添加一个提示信息

 

2.给文本框添加一个提示信息,这个功能不错的,有很多地方要用到的

3.给整个div加上提示信息

 

4.使用方法:

1)在要使用的页面加上示例文件的CSS样式文件

2)在要使用的页面中加上示例文件的JS代码

3)如果是不同目录下的页面要注意JS代码中图片的路径: "document.write('<img id="dhtmlpointer" src="images/arrow2.gif">') "

4)当然您也可以把JS直接放在页面上,然后设置图片的路径

5)注意JS要放到Body中,而不是head中,下载示例看下效果吧

 6)注意如果提示包含有单引号',需用\'表示, 如:onMouseover="ddrivetip('Yahoo\'s Site', 250)";

 

5.本示例的代码下载:(包括图片,JS文件,CSS样式文件)

http://files.cnblogs.com/xiaoxijin/Tooltips.rar

 

6.利用这个JS,我们还可以绑定来自数据库中的信息,比如在gridview控件的链接上绑定附加信息等,这个就看自己怎么去用了

 

7.最后更多的效果请访问这个网站:   http://www.dynamicdrive.com/dynamicindex5/dhtmltooltip2.htm   ,

 

 

posted @ 2008-11-06 20:01 Steven Xiao 阅读(977) | 评论 (3)编辑

2008年10月28日 #

 如下图的效果: 

 

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataTable dt = GetCategory().Tables[0];
            //绑定数据到栏目列表上
            BindToChannelList(dt, 0);

            }
        }

 

 

/// <summary>
        /// 递归绑定数据到ddlChannelList控件上,形成树状结构
        /// </summary>
        /// <param name="dt">数据源</param>
        /// <param name="categoryid">栏目id</param>
        private void BindToChannelList(DataTable dt, int categoryid)
        {

             //DataView dv = dt.DefaultView;使用这句在asp.net 1.1中会出现"在位置 1 处没有任何行。"的错误,感谢阿耀同学的帮助.

             DataView dv=new DataView(dt);
            
            dv.RowFilter = " ParentID= " + categoryid.ToString(); //过滤

            int layer = 0; //默认为第一层
            foreach (DataRowView drv in dv)
            {
                layer = int.Parse(drv["Layer"].ToString().Trim()); //取得第几层
                string span = "";
                if (categoryid != 0)
                {
                    for (int i = 0; i < layer; i++)
                    {
                        span += " ";
                    }
                    span += "|╴";//添加前面的空格
                }


                ListItem li = new ListItem();
                li.Text = span + drv["CategoryName"].ToString();
                li.Value = drv["CategoryID"].ToString();
                this.ddlChannelList.Items.Add(li);
                BindToChannelList(dt, Convert.ToInt32(drv["CategoryID"]));
            }
        }

 

----数据库表结构

CREATE TABLE [Category] (
 [CategoryID] [int] IDENTITY (1, 1) NOT NULL ,
 [CategoryName] [nvarchar] (255)  NOT NULL ,
 [Layer] [int] NULL  DEFAULT (1),
 [ParentID] [int] NULL  DEFAULT (0),
 [Intro] [nvarchar] (255)  NULL ,
 [AddTime] [datetime] NULL  DEFAULT (getdate()),
 CONSTRAINT [PK_Category] PRIMARY KEY  CLUSTERED
 (
  [CategoryID]
 )  ON [PRIMARY]
) ON [PRIMARY]
GO

posted @ 2008-10-28 12:56 Steven Xiao 阅读(388) | 评论 (2)编辑

2008年7月12日 #

在上一篇文章中基本上已实现了网站的多语言功能了,但是网站上的图片,CSS样式文件怎么利用资料文件来实现呢?

1.我们接着上一篇文章中建立的项目继续做,新建一个test2.aspx文件,同时新建一个images文件夹和style文件夹.
在images文件夹下放两张图片: loading.gif 和loading_en.gif  . 在style文件夹下建两个CSS样式表文件: CSS.css 和CSS_en.css

CSS.css文件的样式代码为:

body
{
    font-family: Arial @宋体 font-size:12px;
   
}

#maindiv
{
    margin: 20px;
    padding: 10px;
    height: 200px;
    width: 200px;
    border: solid 5px #C0C0C0;
    text-align: center;
    background-color: Olive;
}

CSS_en.css文件样式代码为:

body
{
    font-family: Arial Verdana;
    font-size: 12px;
}


#maindiv
{
    margin: 20px;
    padding: 10px;
    height: 200px;
    width: 200px;
    border: solid 5px #C0C0C0;
    text-align: center;
    background-color: gray;
}


2.新一个命名为BaseLanguage.cs的类,并设置这类继承: System.Web.UI.Page ,代码如下:


    public class BaseLanguage : System.Web.UI.Page
    {
        protected override void InitializeCulture()
        {
            string culture = Request.QueryString["curlanguage"];
            if (!String.IsNullOrEmpty(culture))
            {
                System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(culture);
                System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(culture);
            }
        }

    }

因为上面的这段代码是每个页面都必须要有的,所以这里把分给写到一个专门的类中,并继承System.Web.UI.Page,然后每个页面再继承这个类就可以了

整个项目的文件结构如下图所示:



3.打开test2.aspx文件,在head中加入
<head runat="server">
    <title>asp.net 2.0实现多语言</title>
    
    <link href="style/CSS.css" rel="stylesheet" type="text/css" id="link"  runat="server"/>
   
</head>


这里我给<link>,添加了runat="server" id="link",就把link作为了一个服务器控件了,在后台可以引用
同时body中的代码如下:
<body>
    <form id="form1" runat="server">
   <center>
        <div id="maindiv">
            <br />
            <a href="?curlanguage=zh-cn">中文</a> &nbsp;
             <a href="?curlanguage=en-us">英文</a>
            <br />
            <br />
            国家:&nbsp;<asp:Literal ID="ltlcountry" runat="server"></asp:Literal>
            <br />
            城市:&nbsp;<asp:Literal ID="ltlcity" runat="server"></asp:Literal>
           
             <br />
            <br />
            国家2:&nbsp;<asp:Literal ID="ltlcountry2" runat="server"></asp:Literal>
            <br />
            城市2:&nbsp;<asp:Literal ID="ltlcity2" runat="server"></asp:Literal>
            <br />
            <br />
            <br />
            <br />
            <img runat="server" id="imgLoading" alt="" src="~/images/loading.gif" />
            
        </div>
    </center>
    </form>
</body>


//注意加个img标签,runat="server"

4.打开资源文件,添加一个名称为loadingImg和pagestyle的资源项:如下图所示





5. 打开test2.aspx.cs文件,把它继承"System.Web.UI.Page" 改成继承 "BaseLanguage"类
代码如下所示:


    public partial class Test2 : BaseLanguage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                link.Href = Resources.language.pagestyle.ToString();   //页面的样式文件设置
                imgLoading.Src = Resources.language.loadingImg.ToString();   //图片的路径

                ltlcountry.Text = Resources.language.country.ToString();
                ltlcity.Text = Resources.language.city.ToString();

                ltlcountry2.Text = (string)GetGlobalResourceObject("language", "country");
                ltlcity2.Text = (string)GetGlobalResourceObject("language", "city");

               

            }
        }
    }

6.build下整个项目,F5浏览下 test2.aspx 的 效果:图片和样式都有改变


7.最后 如何让我网站自动根据用户端的浏览器语言设置来自动显示相应的呢?
  1)打开web.config文件, 在system.web节中间加上globalization配置节,如下代码:
<system.web>
.......
<globalization culture="auto" uiCulture="auto" requestEncoding="UTF-8" responseEncoding="UTF-8"/>
    </system.web>


   2)打开IE浏览器,工具-->Internet选项-->常规-->语言  ,来设置浏览器的语言项,为里我把英语(美国)移到最上面 .如下图所示:



点"确定",关了浏览器,然后再重新浏览 test2.aspx.在我们没有点击"英文"就自动显示英文了.



整个项目的源文件下载: 
/Files/xiaoxijin/MulitLanguage.rar



posted @ 2008-07-12 11:56 Steven Xiao 阅读(361) | 评论 (2)编辑

1.新建一个asp.net web应用程序


2.创建的项目如下图所示


3.右击web项目名称,添加一个全局资源文件夹"app_GlobalResources" ,这个是asp.net 2.0特有的


4.右击"app_GlobalResources"文件夹,添加两个资源文件: language.resx(简体资源文件)  和language.en-us.resx (英文的资源文件)




5.打开两个资源文件,添加相应的资源信息,如下图所示




6.打开default.aspx文件,输入如下代码:
<body>
    <form id="form1" runat="server">
    <center>
        <div style="margin: 20px; padding: 10px; height: 200px; width: 200px; border: solid 1px #C0C0C0;
            text-align: center;">
            <br />
            <a href="?curlanguage=zh-cn">中文</a> &nbsp;
             <a href="?curlanguage=en-us">英文</a>
            <br />
            <br />
            国家:&nbsp;<asp:Literal ID="ltlcountry" runat="server"></asp:Literal>
            <br />
            城市:&nbsp;<asp:Literal ID="ltlcity" runat="server"></asp:Literal>
           
             <br />
            <br />
            国家2:&nbsp;<asp:Literal ID="ltlcountry2" runat="server"></asp:Literal>
            <br />
            城市2:&nbsp;<asp:Literal ID="ltlcity2" runat="server"></asp:Literal>
        </div>
    </center>
    </form>
</body>


预览如下图所示:


7.打开Default.aspx.cs文件,输入如下代码:

  

//这段代码很重要 
protected override void InitializeCulture()
        {
            string culture = Request.QueryString["curlanguage"];
            if (!String.IsNullOrEmpty(culture))
            {
                System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(culture);
                System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(culture);
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ltlcountry.Text = Resources.language.country.ToString();
                ltlcity.Text = Resources.language.city.ToString();

                ltlcountry2.Text =(string)GetGlobalResourceObject("language", "country");
                ltlcity2.Text=(string)GetGlobalResourceObject("language", "city");

            }
        }

8. build下整个项目,按F5浏览: 点击下图中的  "中文" 和 "英文" 链接就可以查看我们所要的效果了









posted @ 2008-07-12 10:41 Steven Xiao 阅读(344) | 评论 (1)编辑

2008年3月23日 #

//如果是单独放在一个类中,记得要引用System.Web.Extensions,否则 ScriptManager不能用

/******************************************************

 *  Author: 肖煕金

 *  Description:在後台註冊JavaScript腳本彈出信息對話框及確認對話框

 *  Date: 2008-12-27 

 *  注意: 當前的代碼傪適合於在asp.net 2.0,並且安裝了AJAX Extensions 1.0的環境中使用

 *  因為當前的類引用了System.Web.Extensions這個ajax命名空間

*******************************************************/

using System;

using System.Collections.Generic;

using System.Text;

using System.Web;

using System.Web.UI;


///在後台註冊JavaScript腳本彈出信息對話框及確認對話框(需要有MS AJAX環境)

namespace ScriptAlert

{

    /// <summary>

    ///  在後台註冊JavaScript腳本彈出信息對話框及確認對話框(需要有MS AJAX環境)

    /// </summary>

    public class Script

    {

        /// <summary>

        /// 在後台註冊JavaScript腳本彈出信息對話框及確認對話框(需要有MS AJAX環境)

        /// </summary>

        public Script() { }



        

        /// <summary>

        ///  Javascript方式彈出消息對話框

        /// </summary>

        /// <param name="message">要彈出的消息內容</param>

        /// <param name="page">當前頁面,參數可以直接寫:this 或 Page</param>

        public static void Alert(string message, Page page)

        {

            page.ClientScript.RegisterStartupScript(page.GetType(), null, "alert('" + message + "');", true);

        }



        /// <summary>

        /// 向頁面註冊javascript腳本,這種方式是很靈活的,可以在頁面上註冊任何你想要的js腳本

        /// </summary>

        /// <param name="scriptContent">Javascript腳本的內容,記得不要在腳本兩端加script標誌,script標志程序會自動生成</param>

        /// <param name="page">當前頁面,參數可以直接寫:this 或 Page</param>

        public static void RegisterScript(string scriptContent, Page page)

        {

            page.ClientScript.RegisterStartupScript(page.GetType(), null, scriptContent, true);

        }




        /// <summary>

        /// javascript彈出消息後,跳轉到指定的URL鏈接頁面  

        /// </summary>

        /// <param name="message">要彈出的消息內容</param>

        /// <param name="pageUrl">要跳轉到的頁面鏈接,站內鏈接請填寫相對路徑,站外的鏈接需要加上"http://",如"http://www.baidu.com"</param>

        /// <param name="page">當前頁面,參數可以直接寫:this 或 Page</param>

        public static void AlertAndGotoUrl(string message, string pageUrl, Page page)

        {

            string strScript = "alert('" + message + "');window.location.href='" + pageUrl + "';";

            page.ClientScript.RegisterStartupScript(page.GetType(), null, strScript, true);

        }





        /// <summary>

        /// 利用Ajax的方式彈出消息對話框,這種方式主要用於在用戶控件和UpdatePanel控件中使用,在頁面中也可以使用 

        /// </summary>

        /// <param name="message">要彈出的消息內容</param>

        /// <param name="controlId">控件的ID屬性名稱,用戶控件和頁面中參數為:this,UpdatePanel控件中參數為當前UpdatePanel控件的ID屬性名稱</param>

        public static void AjaxAlert(string message, Control controlId)

        {

            ScriptManager.RegisterStartupScript(controlId, controlId.GetType(), null, "alert('" + message + "');", true);           

        }




        /// <summary>

        /// 利用Ajax的方式向控件(用戶控件和UpdatePanel)或頁面註冊Javascript腳本,這種方式主要用於在用戶控件和UpdatePanel控件中使用,在頁面中也可以使用 

        /// </summary>

        /// <param name="scriptContent">Javascript腳本的內容,記得不要在腳本兩端加script標志,script標志程序會自動生成</param>

        /// <param name="controlId">控件的ID屬性名稱,用戶控件和頁面中參數為:this,UpdatePanel控件中參數為當前UpdatePanel控件的ID屬性名稱</param>

        public static void AjaxRegisterScript(string scriptContent, Control controlId)

        {

            ScriptManager.RegisterStartupScript(controlId, controlId.GetType(), null, scriptContent, true);

        }




        /// <summary>

        ///利用Ajax的方式彈出消息對話框後,跳轉到指定的URL鏈接頁面,這種方式主要用於在用戶控件和UpdatePanel控件中使用,在頁面中也可以使用 

        /// </summary>

        /// <param name="message">要彈出的消息內容</param>

        /// <param name="pageUrl">要跳轉到的頁面鏈接,站內鏈接請填寫相對路徑,站外的鏈接需要加上"http://",如"http://www.baidu.com"</param>

        /// <param name="controlId">控件的ID屬性名稱,用戶控件和頁面中參數為:this,UpdatePanel控件中參數為當前UpdatePanel控件的ID屬性名稱</param>

        public static void AjaxAlertAndGotoUrl(string message, string pageUrl, Control controlId)

        {

            string strScript = "alert('" + message + "');window.location.href='" + pageUrl + "';";

            ScriptManager.RegisterStartupScript(controlId, controlId.GetType(), null, strScript, true);

        }





        /// <summary>

        /// Javascript彈出確認對話框後,並跳轉到指定的URL鏈接頁面

        /// </summary>

        /// <param name="message">要彈出的消息內容</param>

        /// <param name="okGotoUrl">選擇確認(OK)按鈕後要跳轉到的頁面URL,站內鏈接寫相對路徑,站外鏈接需加"http://"</param>

        /// <param name="cancelGotoUrl">選擇取消(Cancel)按鈕後要跳轉到的頁面URL,如果參數為Null或空字符""則返回false(不跳轉),站內鏈接寫相對路徑,站外鏈接需加"http://"</param>

        /// <param name="page">當前頁面,參數可以直接寫:this 或 Page</param>

        public static void ConfirmAndGotoUrl(string message, string okGotoUrl, string cancelGotoUrl, Page page)

        {

            string strScript = "";

            if (String.IsNullOrEmpty(cancelGotoUrl))

            {                 

                strScript = "if(confirm('" + message + "')==true){window.location.href='" + okGotoUrl + "';} else {return false;}";

            }

            else

            {

                strScript = "if(confirm('" + message + "')==true){window.location.href='" + okGotoUrl + "';} else{window.location.href='" + cancelGotoUrl + "';}";

            }


            page.ClientScript.RegisterStartupScript(page.GetType(), null, strScript, true);

        }


        

        /// <summary>

        /// Javascript彈出確認對話框後,並執行指定的Javascript腳本

        /// </summary>

        /// <param name="message">要彈出的消息內容</param>

        /// <param name="okToScript">選擇確認(OK)按鈕後要執行的javacript腳本內容</param>

        /// <param name="cancelToScript">選擇取消(Cancel)按鈕後要執行的javacript腳本內容,如果參數為Null或空字符""則返回false</param>

        /// <param name="page">當前頁面,參數可以直接寫:this 或 Page</param>

        public static void ConfirmAndExecuteScript(string message, string okToScript, string cancelToScript, Page page)

        {


            string strScript = "";

            if (String.IsNullOrEmpty(cancelToScript))

            {

                strScript = "if(confirm('" + message + "')==true){"+okToScript+"} else{return false;}";

            }

            else

            {

                strScript = "if(confirm('" + message + "')==true){" + okToScript + "} else{" + cancelToScript + "}";

            }


            page.ClientScript.RegisterStartupScript(page.GetType(), null, strScript, true);


        }




        /// <summary>

        /// 利用Ajax方式彈出確認對話框後,並跳轉到指定的URL鏈接頁面,適合於控件(用戶控件和UpdatePanel控件中)和頁面中

        /// </summary>

        /// <param name="message">要彈出的消息內容</param>

        /// <param name="okGotoUrl">選擇確認(OK)按鈕後要跳轉到的頁面URL,站內鏈接寫相對路徑,站外鏈接需加"http://"</param>

        /// <param name="cancelGotoUrl">選擇取消(Cancel)按鈕後要跳轉到的頁面URL,如果參數為Null或空字符""則返回false(不跳轉),站內鏈接寫相對路徑,站外鏈接需加"http://"</param>

        /// <param name="controlId">控件的ID屬性名稱,用戶控件和頁面中參數為:this,UpdatePanel控件中參數為當前UpdatePanel控件的ID屬性名稱</param>

        public static void AjaxConfirmAndGotoUrl(string message, string okGotoUrl, string cancelGotoUrl, Control controlId)

        {

            string strScript = "";

            if (String.IsNullOrEmpty(cancelGotoUrl))

            {

                strScript = "if(confirm('" + message + "')==true){window.location.href='" + okGotoUrl + "';} else {return false;}";

            }

            else

            {

                strScript = "if(confirm('" + message + "')==true){window.location.href='" + okGotoUrl + "';} else{window.location.href='" + cancelGotoUrl + "';}";

            }

            

            ScriptManager.RegisterStartupScript(controlId, controlId.GetType(), null, strScript, true);             

        }



        /// <summary>

        /// 利用Ajax方式彈出確認對話框後並執行指定的Javascript腳本

        /// </summary>

        /// <param name="message">要彈出的消息內容</param>

        /// <param name="okToScript">選擇確認(OK)按鈕後要執行的javacript腳本內容</param>

        /// <param name="cancelToScript">選擇取消(Cancel)按鈕後要執行的javacript腳本內容,如果參數為Null或空字符""則返回false</param>

        /// <param name="controlId">控件的ID屬性名稱,用戶控件和頁面中參數為:this,UpdatePanel控件中參數為當前UpdatePanel控件的ID屬性名稱</param>

        public static void AjaxConfirmAndExecuteScript(string message, string okToScript, string cancelToScript, Control controlId)

        {

             

            string strScript = "";

            if (String.IsNullOrEmpty(cancelToScript))

            {

                strScript = "if(confirm('" + message + "')==true){" + okToScript + "} else{return false;}";

            }

            else

            {

                strScript = "if(confirm('" + message + "')==true){" + okToScript + "} else{" + cancelToScript + "}";

            }

            ScriptManager.RegisterStartupScript(controlId, controlId.GetType(), null, strScript, true);  

        }

    }

}

源代码下载:/Files/xiaoxijin/Script.7z

 

dll文件下载:/Files/xiaoxijin/ScriptAlert.7z


 

posted @ 2008-03-23 00:18 Steven Xiao 阅读(1035) | 评论 (0)编辑

2008年1月24日 #

06年做的一个很小的web程序,vs.net 2005 + ACCESS数据库开发
/Files/xiaoxijin/WebSite.rar
posted @ 2008-01-24 22:18 Steven Xiao 阅读(123) | 评论 (0)编辑

2008年1月4日 #

注: 來自:http://www.cnsdn.com.cn/inc/show.asp?id=1012
//关闭,父窗口弹出对话框,子窗口直接关闭
this.Response.Write("<script language=javascript>window.close();</script>");

//关闭,父窗口和子窗口都不弹出对话框,直接关闭
this.Response.Write("<script>");
this.Response.Write("{top.opener =null;top.close();}");
this.Response.Write("</script>");

//弹出窗口刷新当前页面width=200 height=200菜单。菜单栏,工具条,地址栏,状态栏全没有
this.Response.Write("<script language=javascript>window.open('rows.aspx','newwindow','width=200,height=200')</script>");

//弹出窗口刷新当前页面
this.Response.Write("<script language=javascript>window.open('rows.aspx')</script>");
this.Response.Write("<script>window.open('WebForm2.aspx','_blank');</script>");

//弹出提示窗口跳到webform2.aspx页(在一个IE窗口中)
this.Response.Write(" <script language=javascript>alert('注册成功');window.window.location.href='WebForm2.aspx';</script> ");

//关闭当前子窗口,刷新父窗口
this.Response.Write("<script>window.opener.location.href=window.opener.location.href;window.close();</script>");
this.Response.Write("<script>window.opener.location.replace(window.opener.document.referrer);window.close();</script>");

//子窗口刷新父窗口
this.Response.Write("<script>window.opener.location.href=window.opener.location.href;</script>");
this.Response.Write("<script>window.opener.location.href='WebForm1.aspx';</script>");

//弹出提示窗口.确定后弹出子窗口(WebForm2.aspx)
this.Response.Write("<script language='javascript'>alert('发表成功!');window.open('WebForm2.aspx')</script>");

//弹出提示窗口,确定后,刷新父窗口
this.Response.Write("<script>alert('发表成功!');window.opener.location.href=window.opener.location.href;</script>");

//弹出相同的一页
<INPUT type="button" value="Button" onclick="javascript:window.open(window.location.href)">

//
Response.Write("parent.mainFrameBottom.location.href='yourwebform.aspx?temp=" +str+"';");


<SCRIPT LANGUAGE="javascript">
<!--
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no') //这句要写成一行
-->
</SCRIPT> 
  
  参数解释:
  
  <SCRIPT LANGUAGE="javascript"> js脚本开始;
  window.open 弹出新窗口的命令;
  'page.html' 弹出窗口的文件名;
  'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替;
  height=100 窗口高度;
  width=400 窗口宽度;
  top=0 窗口距离屏幕上方的象素值;
  left=0 窗口距离屏幕左侧的象素值;
  toolbar=no 是否显示工具栏,yes为显示;
  menubar,scrollbars 表示菜单栏和滚动栏。
  resizable=no 是否允许改变窗口大小,yes为允许;
  location=no 是否显示地址栏,yes为允许;
  status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
  </SCRIPT> js脚本结束

'newwin':隐藏菜单栏地址栏工具条
width=50:宽度
height=50:高度
scrollbars=yes/no:滚动条
top=50:窗口距离屏幕上方
left=50:窗口距离屏幕左侧
例:window.open('detail.aspx?ID="+e.Item.Cells[1].Text+"','newwin','width=750,height=600,scrollbars=yes,top=50,left=50');");
this.Response.Write("<Script>window.open('WebForm2.aspx','','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=750,height=470,left=80,top=40');</script>");

例:
this.Response.Write("<script>alert('发表成功!');window.opener.location.href=window.opener.location.href;</script>");
this.Response.Write("<script>");
this.Response.Write("{top.opener =null;top.close();}");
this.Response.Write("</script>");

例: linkcolumn1.DataNavigateUrlFormatString="javascript:varwin=window.open('edit_usr.aspx?actid={0}','newwin','width=750,height=600,scrollbars=yes,top=50,left=50');window.close()";

this.Response.Write("<Script>window.open('WebForm7.aspx','','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=750,height=470,left=80,top=40');</script>");

弹出跟你当前的窗口有没有菜单工具栏没有关系,你只要在页面中写一个脚本它就弹出了.比如
<a href=# onclick="window.open('xxx.aspx','窗口名称','参数');">xxxxx</a>

以下列出一些弹出窗口的参数,你可自行设定,参数之间用逗号分隔

可选。字符串--列出对象表并用逗号分开。每一项都有自己的值,他们将被分开(如:"fullscreen=yes, toolbar=yes")。下面是被支持的各种特性。 
channelmode = { yes | no | 1 | 0 } 是否在窗口中显示阶梯模式。默认为no。
directories = { yes | no | 1 | 0 } 是否在窗口中显示各种按钮。默认为yes。
fullscreen = { yes | no | 1 | 0 } 是否用全屏方式显示浏览器。默认为no。使用这一特性时需要非常小心。因为这一属性可能会隐藏浏览器的标题栏和菜单,你必须提供一个按钮或者其他提示来帮助使用者关闭这一浏览窗口。ALT+F4可以关闭窗口。一个全屏窗口必须使用阶梯(channelmode)模式。
height = number 指定窗口的高度,单位是像素。最小值是100。
left = number 指定窗口距左边框的距离,单位是像素。值必须大于或者等于0。
location = { yes | no | 1 | 0 } 指定是否在窗口中显示地址栏。默认为yes。
menubar = { yes | no | 1 | 0 } 指定是否在窗口中显示菜单栏。默认为yes。
resizable = { yes | no | 1 | 0 } 指定是否在窗口中显示可供用户调整大小的句柄。默认为yes。
scrollbars = { yes | no | 1 | 0 } 指定是否在窗口中显示横向或者纵向滚动条。默认为yes。
status = { yes | no | 1 | 0 } 指定是否在窗口中显示状态栏。默认为yes。
titlebar = { yes | no | 1 | 0 } 指定是否在窗口中显示标题栏。在非调用HTML Application或者一个对话框的情况下,这一项将被忽略。默认为yes。
toolbar = { yes | no | 1 | 0 } 指定是否在窗口中显示工具栏,包括如前进、后退、停止等按钮。默认为yes。
top = number 指定窗口顶部的位置,单位是像素。值必须大于或者等于0。
width = number 指定窗口的宽度,单位是像素。最小值是100。

【1、最基本的弹出窗口代码】
  
  <SCRIPT LANGUAGE="javascript">
  <!--
  window.open ('page.html')
  -->
  </SCRIPT>
  
  因为这是一段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE="javascript">标签和</script>之间。<!-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。window.open ('page.html') 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。用单引号和双引号都可以,只是不要混用。这一段代码可以加入HTML的任意位置,<head>和</head>之间可以,<body>间</body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。
  
【2、经过设置后的弹出窗口】
  
  下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。
  
  <SCRIPT LANGUAGE="javascript">
  <!--
  window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no') //这句要写成一行
  -->
  </SCRIPT> 
  
  参数解释:
  
  <SCRIPT LANGUAGE="javascript"> js脚本开始;
  window.open 弹出新窗口的命令;
  'page.html' 弹出窗口的文件名;
  'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替;
  height=100 窗口高度;
  width=400 窗口宽度;
  top=0 窗口距离屏幕上方的象素值;
  left=0 窗口距离屏幕左侧的象素值;
  toolbar=no 是否显示工具栏,yes为显示;
  menubar,scrollbars 表示菜单栏和滚动栏。
  resizable=no 是否允许改变窗口大小,yes为允许;
  location=no 是否显示地址栏,yes为允许;
  status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
  </SCRIPT> js脚本结束
    
【3、用函数控制弹出窗口】
  
  下面是一个完整的代码。
  <html>
  <head>
  <script LANGUAGE="JavaScript">
  <!--
  function openwin() {
  window.open ("page.html", "newwindow", "height=100, width=400, toolbar =no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") //写成一行
  }
  //-->
  </script>
  </head>
  <body onload="openwin()">
  任意的页面内容...
  </body>
  </html>

  这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。怎么调用呢?

  方法一:<body onload="openwin()"> 浏览器读页面时弹出窗口;
  方法二:<body onunload="openwin()"> 浏览器离开页面时弹出窗口;
  方法三:用一个连接调用:
  <a href="#" onclick="openwin()">打开一个窗口</a>
  注意:使用的“#”是虚连接。
  方法四:用一个按钮调用:
  <input type="button" onclick="openwin()" value="打开窗口">
   
【4、同时弹出2个窗口】
  
   对源代码稍微改动一下:
  
  <script LANGUAGE="JavaScript">
  <!--
  function openwin() {
  window.open ("page.html", "newwindow", "height=100, width=100, top=0, left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=n o, status=no")//写成一行
  window.open ("page2.html", "newwindow2", "height=100, width=100, top=1 00, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, loca tion=no, status=no")//写成一行
  }
  //-->
  </script>
  为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可 。最后用上面说过的四种方法调用即可。
  注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。 
 
【5、主窗口打开文件1.htm,同时弹出小窗口page.html】

  如下代码加入主窗口<head>区:
  <script language="javascript">
  <!--
  function openwin() {
  window.open("page.html","","width=200,height=200")
  }
  //-->
  </script>
  加入<body>区:
  <a href="1.htm" onclick="openwin()">open</a>即可。
  
【6、弹出的窗口之定时关闭控制】
  
  下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段 代码加入弹出的页面(注意是加入page.html的HTML中,不是主页面中),让它10秒后自动关闭是不是更酷了?
首先,将如下代码加入page.html文件的<head>区:
  <script language="JavaScript">
  function closeit()
  {
  setTimeout("self.close()",10000) //毫秒
  }
  </script>
  然后,再用<body onload="closeit()"> 这一句话代替page.html中原有的<BODY>这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗口的代码,10秒钟后就自行关闭该窗口。)

【7、在弹出窗口中加上一个关闭按钮】

  <FORM>
  <INPUT TYPE='BUTTON' VALUE='关闭' onClick='window.close()'>
  </FORM>
  呵呵,现在更加完美了!

【8、内包含的弹出窗口-一个页面两个窗口】

  上面的例子都包含两个窗口,一个是主窗口,另一个是弹出的小窗口。通过下面的例子,你可以在一个页面内完成上面的效果。

  <html>
  <head>
  <SCRIPT LANGUAGE="JavaScript">
  function openwin()
  {
  OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no ,scrollbars="+scroll+",menubar=no");
  //写成一行
  OpenWindow.document.write("<TITLE>例子</TITLE>")
  OpenWindow.document.write("<BODY BGCOLOR=#ffffff>")
  OpenWindow.document.write("<h1>Hello!</h1>")
  OpenWindow.document.write("New window opened!")
  OpenWindow.document.write("</BODY>")
  OpenWindow.document.write("</HTML>")
  OpenWindow.document.close()
  }
  </SCRIPT>
  </head>
  <body>
  <a href="#" onclick="openwin()">打开一个窗口</a>
  <input type="button" onclick="openwin()" value="打开窗口">
  </body>
  </html>

  看看OpenWindow.document.write()里面的代码不就是标准的HTML吗?只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用 OpenWindow.document.close()结束啊。

【9、终极应用--弹出的窗口之Cookie控制】

  回想一下,上面的弹出窗口虽然酷,但是有一点小毛病,比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,我们使用cookie来控制一下就可以了。
  首先,将如下代码加入主页面HTML的<HEAD>区:

  <script>
  function openwin(){
  window.open("page.html","","width=200,height=200")
  }
  function get_cookie(Name) {
  var search = Name + "="
  var returnvalue = "";
  if (document.cookie.length > 0) {
  offset = document.cookie.indexOf(search)
  if (offset != -1) {
  offset += search.length
  end = document.cookie.indexOf(";", offset);
  if (end == -1)
  end = document.cookie.length;
  returnvalue=unescape(document.cookie.substring(offset, end))
  }
  }
  return returnvalue;
  }  
  function loadpopup(){
  if (get_cookie('popped')==''){
  openwin()
  document.cookie="popped=yes"
  }
  }
  </script>

  然后,用<body onload="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的<BODY>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!

posted @ 2008-01-04 15:06 Steven Xiao 阅读(293) | 评论 (0)编辑

2007年12月28日 #

a.aspx 文件中的代码:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>gridview控件示例</title>
   
    <link href="App_Themes/Theme1/index.css" rel="stylesheet" type="text/css" />
   
 <script type="text/javascript" language="javascript">
      
    function DoCheck(flag)// 全选 flag=1 反选 flag=0
    {
        var inputs = document.forms[0].elements;
        for (var i=0; i < inputs.length; i++)
        if (inputs[i].type == 'checkbox')
        {
            if (flag)
                inputs[i].checked = true;
           else
                inputs[i].checked =!inputs[i].checked;
        }
    }
     
   
</script>
</head>
<body >    

    <form id="form1" runat="server">
<asp:GridView id="gvMyDeptNotFinished" runat="server" OnPageIndexChanging="gvMyDeptNotFinished_PageIndexChanging" AllowPaging="True" AutoGenerateColumns="False" SkinID="gvcaselist">
<Columns>
 <asp:TemplateField Visible="false" >              
<ControlStyle Width="20px"  />
 <HeaderTemplate>    
 <a onclick="DoCheck(0);" href="#">反选</a> <%--反选--%>
 <a onclick="DoCheck(1);" href="#">全选</a> <%--全选--%>                  
</HeaderTemplate>
<ItemTemplate>
<div style="text-align:center;width:50px;">
    <asp:CheckBox ID="CheckBox1" runat="server"/>
</div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ID" Visible="false" >
<ControlStyle Width="0px" />
<ItemTemplate>
    <asp:Label ID="lblID" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="姓名">
<ControlStyle Width="100px"></ControlStyle>
<ItemTemplate>
<div style="text-align:left; padding-left:5px;">
<a href='<%# "MyDeptNotFinishedDetails.aspx?emp_code="+Eval("emp_code")+"&titleid="+Request.QueryString["titleid"]+"&cur_status="+Request.QueryString["cur_status"]%>' target="_self" class="nav2"><%# Eval("pic_cn")%></a>

</div><%--这里参数从前一页传过来的,也有从数据绑定的,要注意不要写错了哦--%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="数量">
<ControlStyle Width="150px"></ControlStyle>
<ItemTemplate>
  <div class="myclass1">
   <asp:Literal ID="litcasesum" runat="server" Text='<%# Eval("sumcase") %>'></asp:Literal>                              
   </div>               
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="点数">
<ControlStyle Width="150px"></ControlStyle>
<ItemTemplate>
  <div style="text-align:left; color:Red ;">
   <asp:Literal ID="litScore" runat="server" Text='<%# Eval("CaseWeight") %>'></asp:Literal>                             </div>               
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="当前操作人">
<ControlStyle Width="100px"></ControlStyle>
<ItemTemplate>
  <div style="text-align:left;">
   <%# Eval("operator") %>                              
   </div>               
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="当前状态">
<ControlStyle Width="250px"></ControlStyle>
<ItemTemplate>
<asp:Label ID="lblcasename" runat="server" Text='<%# Eval("cur_status_name") %>'  ></asp:Label>             
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<DIV class="gvbottom">&nbsp;
<asp:Button id="btnGoToBack" onclick="btnGoToBack_Click" runat="server" Text="返回" SkinID="loginbtn"></asp:Button> &nbsp;
<asp:Button id="btnToConfirm" runat="server" Text="确认" OnClientClick="javascript:return confirm('确认选择?')" SkinID="loginbtn" OnClick="btnToConfirm_Click" ></asp:Button>
</DIV>
</form>
</body>

</html>


===========

.aspx.cs文件代码


 // using System.Data.SqlClient;

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GetMyDeptNotFinishedCase();
        }
    }


/// <summary>
    /// gridview數據綁定
    /// </summary>
    private void GetMyDeptNotFinishedCase()
    {
        DataSet ds = new DataSet();
        ds = bll.RunProcedure("CP_MyDeptNotFinished_Person");
        if (ds.Tables[0].Rows.Count > 0)
        {
            gvMyDeptNotFinished.DataSource = ds.Tables[0];
            gvMyDeptNotFinished.DataBind();
        }
        else
        {
         //Response.Write("取数据出错,或没有记录");
        }

    }


   /// <summary>
    /// 确认 button 按钮事件
    /// </summary>
    /// <returns></returns>
protected void btnToConfirm_Click(object sender, EventArgs e)
    {
 
        string allselect = GetSelected();
        if (string.IsNullOrEmpty(allselect))
        {
            //Response.Write("您还没有选择数据,请至少选择一项!");
            return;
        }

        string[] allempcode = allselect.Split(',');

        int rowsAffected = 0;       
        
        foreach (string emp_code in allempcode)
        {
           
            try
            {
                SqlParameter[] parameters ={
                                        new SqlParameter("@emp_code",SqlDbType.NVarChar)
                                        };
                parameters[0].Value = emp_code;
              

                bll.RunProcedure("CP_Help", parameters, out rowsAffected); //使用存储过程
            }
            catch(Exception ex)
            {
                throw new Exception(ex.Message);

            }
        }

        if (rowsAffected > 0)
        {
               //Response.Write("操作成功!");
               
        }
        else
        {
            //Response.Write("操作失败!");
            Return;
        }

       GetMyDeptNotFinishedCase();//重新再绑定数据到gridview控件


   }


   /// <summary>
    /// 取所有已被選擇項的ID值,
    /// </summary>
    /// <returns></returns>

 private string GetSelected()
    {
        string emp_code = null;
        foreach (GridViewRow gvrow in gvMyDeptNotFinished.Rows)
        {
            CheckBox ch = (CheckBox)gvrow.Cells[0].FindControl("CheckBox1");
            if (ch.Checked)
            {
                Label lbl = (Label)gvrow.Cells[1].FindControl("lblID");
                emp_code += lbl.Text + ",";               
            }
        }

        if (!string.IsNullOrEmpty(emp_code))
        {
            emp_code = emp_code.Substring(0, emp_code.Length - 1);
        }
        return emp_code;
    }


 /// <summary>
    /// 返回按鈕事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnGoToBack_Click(object sender, EventArgs e)
    {
        Response.Redirect("MyDeptNotFinished.aspx?titleid="+Request.QueryString["titleid"].ToString());
   
   
    }


另外,我们在数据绑定到gridview控件,有时需要把一项的单个值特别显示出来,比如使用不同的颜色
如下图所示:(申请了变更)

其实这样也很容易实现的,只要我们改下SQL查询语句就可以做到的:
SQL:
SELECT         ID, case_name, ctrl_proc, CONVERT(nvarchar(20), updatedate, 111)
                          AS updatedate,
CaseWeight, 
                          CASE is_apply WHEN '1' THEN '<font color=red>是</font>' ELSE '否' END AS is_apply
FROM             mytable

  



 


posted @ 2007-12-28 19:32 Steven Xiao 阅读(581) | 评论 (0)编辑