http://blog.sina.com.cn/blogzhoujf[订阅][手机订阅]
个人资料
访客
读取中...
好友
读取中...
评论
读取中...
分类
    内容读取中…
博文
Asp.Net页面之间传递数据大致有这么几种方式:
1.GET方式:
  即通过URL加上自定义的name-value集合,这个一般大家都在用,也很方便,而且客户可以直接通过URL访问特定的页面。
2.POST方式:
  即通过提交Form来传递Form里的数据,可以在Form中添加Hidden字段来自定义数据。
3.Application域变量:
  多个页面访问或修改全局变量来交换数据,记得访问时候要进行加锁/解锁。由于是在服务端的变量,可以存储复杂结构的变量类型或对象。
4.Session域变量:
  多个页面访问或修改会话变量来交换数据,记得访问时候也要进行加锁/解锁。由于是在服务端的变量,可以存储复杂结构的变量类型或对象。
(单个页面或包含用户控件可以通过下面的方式)
5.ViewState域变量:
  类似Form变量,存储在客户段页面里,可以使用复杂结构类型的变量或者对象(同时对象要实现Serializabl
ASP.NET弹出一个对话框(2008-08-12 10:32)
  我们在ASP.NET程序的开发过程中,常常需要向用户给出提示信息,比如是否“操作成功”,“确定”还是“取消”操作。
   
    (1) 点击页面上的按钮,弹出一个对话框提示是“确定”还是“取消”操作,我们采用在按钮中添加属性来完成:
举例如下:
    public System.Web.UI.WebControls.Button btnDelRow;
    btnDelRow.Attributes.Add('onclick', 'return confirm('确定要删吗?');');

    (2) 对于页面完成一个操作后,弹出一个对话框提示是否“操作成功”。
举例如下:
    Response.Write('<script>alert('删除成功!')</script>'); 

    (3)允许 ASP.NET 服务器控件在 Page 中发出客户端脚本块:
    public virtual void RegisterStartupScript(string key,string script);

    举例如下:
    if(!this.IsStartupScriptRegistered('hello'))
        this.Registe

SQL 语句优化(2008-08-12 10:25)

SQL 语句优化原则:
1. IN 操作符
    用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。
    但是用IN的SQL性能总是比较低的,从执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:
    将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了。
推荐方案:在业务密集的SQL当中尽量不采用IN操作符。可以用exists代替。
SQL Server例子:
Exists用法:
select * from kj_dept where exists (select * from kj_dept_info where kj_dept.dept_id = dept_id and dept_id=XXX)
in用法:
select * from kj_dept where dept_id in (select dept_id from kj_dept_info where dept_id=XXX)
 
2.NOT IN操作符
    此操作是强列推荐不使用的,因为它不能应用表的索引。
    推荐

url传递中文的方法(2008-08-12 09:58)
传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码。
传递时编码:
string keyword=this.txtSeek.Text.Trim();
this.Response.Redirect('~/product/product_list.aspx?keyword='+Server.UrlEncode(keyword));
如果此时传递的是中文'我',则地址栏显示...product/product_list.aspx?keyword=%e6%88%91
接收时解码:
string keyword=Server.UrlDecode(Request.QueryString['KeyWord']);

此解决方案可能比不上网上那些大段代码的store procedure的性能(性能测试我就免了),我以前也写过那样的Store Procedure或C#代码,不过简单就是美,简单就是高效。以下例子仅供大家参考:

select top 3 PrintObject,PrintOperator,OperateTime from PrintRecord 
图片保存到数据库的方法:

        public void imgToDB(string sql)
         //参数sql中要求保存的imge变量名称为@images
            //调用方法如:imgToDB('update UserPhoto set Photo=@images where UserNo='' + temp + ''');
            FileStream fs = File.OpenRead(t_photo.Text);
            byte[] imageb = new byte[fs.Length];
            fs.Read(imageb, 0, imageb.Length);
            fs.Close();
            SqlCommand com3 = new SqlCommand (sql,con);
      

主题
   查询每个组中最新发布的广告(或点击数最高)。根据该文章的思路可以解决分组查询中的好多问题。
 
需求如果按照广告位置号(ADplaceID,参考下面的表结构)进行分组,如何求出每个组中最新的一条广告记录。   
   
 思路与实现

 1、表结构
               
                  
2、表Sql脚本
      if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Advertisement]') and OBJECTPROPERTY(id, N'IsUserTable') =

vagerent的Asp.net笔记(2008-08-08 14:03)

用vs2005有半年多了,平时也总结了些经验,拿出来分享一下。
===============================================================

vs2005的数据绑定控件在编辑和删除时会自动把datakeynames添加进去
===========================
Page.MaintainScrollPositionOnPostBack = true;//如果页面太长则让他自动保存上次的位置
//Page.SmartNavigation = true;//此法已经不推荐使用
===========================
用Request.Form['tprovince']获取,因为你是客户端改变的,没有保存到viewstate
用这个Request.Form[this.tprovince.UniqueID]
Request.Form['控件ID']
获取客户端改变的select值
============================
.net中引用外部js文件后出错,不能dopostback了,编码都是utf-8,
只要在引用js的语句下面再加一行javascript就行了。why 
<script language='javascript' type='text/javascript' src='../OCRS_NET.js' />
    <script language='javascript' type='text/javascript'>

  MSDN摘要:Microsoft SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表既可以在同一个服务器上,也可以在不同服务器上)。SqlBulkCopy 类允许编写提供类似功能的托管代码解决方案。还有其他将数据加载到 SQL Server 表的方法(例如 INSERT 语句),但相比之下 SqlBulkCopy 提供明显的性能优势。

使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataReader 实例读取数据。

我们在使用Sql Server这些数据库时,可以轻松的通过Sum、Aver、Count等统计出相关结果,那么,在已经把数据检索出来的DataSet(DataTable)中呢?特别是通过Web Service获得了DataSet,这个时候,可是没有办法回头去修改Select语句来获取这些统计了。那么在DataSet/DataTable中是否可以进行统计呢?

    在MSDN中,有一篇MS推荐的统计方法,就是逐行对数据进行求和统计,这个方法,其实有等于无(或许这个方法只是针对于DataGrid求取小计用吧),因为这个方法中采用的是DataGrid的ItemDataBind事件来对数据进行累加,同我们手动写代码统计没有什么区别。

本文介绍一个简单的方法,不需要逐条记录进行计算就可以轻松的获得DataTable中的记录统计结果。这个简单的方法就是调用功能强大的DataTable的函数Compute。

一、调用说明(仅以C#为例,下同):

public object Compute(string strexpression_r,string strFilter)

参数:

strexpression_r:要计算的表达式字符串,基本上类似于Sql Server中的统计表达式

strFilter:统计的过滤字符串,只有满足这个过滤条件的记录才会被统计

二、调用举例: