VS.NET开发中的小技巧

都是偷来的

技巧:图片使网站丰富起来,但有的时候不是所有图片都能正常显示的。这个时候会出现一个或多个红叉叉,这个技巧是告诉你如何处理的。 

< img  src ="hello.gif"  alt ="hello"  onerror ="this.src='error.gif'"   />

在DataGrid和GridView中对表头设定背景图片

private   void  DataGrid1_ItemDataBound( object  sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
    
if (e.Item.ItemType  ==  System.Web.UI.WebControls.ListItemType.Header)
    {
        e.Item.Attributes.Add(
" style " " background-image:url('background.gif') " );
    }
}
GridView:

protected   void  GridView1_RowDataBound( object  sender, GridViewRowEventArgs e)
{
    
if  (e.Row.RowType  ==  DataControlRowType.Header)
    {
        e.Row.Attributes.Add(
" style " " background-image:url('background.gif') " );
    }
}

在DataGrid和GridView中对表头设定背景图片,不需要后台代码。

< asp:GridView  runat ="server"  ID ="gvStatList"  AllowPaging ="false"  Width ="100%"  CssClass ="grid"
                AutoGenerateColumns
="false"  Visible ="true"  ShowFooter ="false" >
                
< HeaderStyle  CssClass ="grid-head"   />
</ asp:GridView >

 

.grid-head  {
    font-size
:  14px ;
    font-weight
:  normal ;
    color
:  #FFFFFF ;
    background-image
:  url(../images/grid-bg.gif) ;
    text-align
: center ;
    vertical-align
: middle ;
    height
:  28px ;
}

互斥对象.很多情况下存在互斥对象,我通常这么处理

bool  showObject
{
set{
TextBox1.Visible
=value;
TextBox2.Visible
=!value;
}

}

可以实现动态图片显示

<%=str%>
后台代码
变量
变量
=@<img src='XXX' onclick='fucn(/)'>

           
foreach (DataRow dr_Child in dsResult1.Tables[0].Rows)
            {
             
               
if (!Convert.ToBoolean(dr_Child["FLAG"]))               
                   {
                    msiChild.sFontColor
= "FontRed";
                    msiChild.BM
= @"<img  src='/Images/NowPostion1.gif' />" + msiChild.BM;
                 }
               
else if (Convert.ToBoolean(dr_Child["FLAG"]))
                {
                    msiChild.BM
= @"<img  src='/Images/submit.gif' />" + msiChild.BM;
                }

                str
+= msiChild.BM;
                      }
           
return str;

@"<img  src='/Images/NowPostion1.gif' />" + @"<br>"
数据显示时
XXXX         XXXX         XXX       XXX
                XXXX                          
                XXXX                          
XXXX         XXXX         XXX       XXX
XXXX         XXXX         XXX       XXX    
XXXX         XXXX         XXX       XXX
                XXXX                          
                XXXX  
一列显示多条不同的数据                    
在改改就可以实现动态图片按扭并且每个按扭可以传不同的值出去

sBM += i["name"].ToString() + @"<img  onclick =  'DoPass(" + "/"" + i["ID"].ToString() + "/")' src='Images/btnInfo.gif' Style='cursor:hand')/>";

这样+JS代码就是动态图片按扭
 

Asp.Net2.0中我们可以方便的访问配置文件中,.NetFrameWork2.0新增加了   SystemWebSectionGroup   类。
允许用户以编程方式访问配置文件的   system.web   组。
比如判断web.config内是否为   debug="true",或者判断身份验证形式

        SystemWebSectionGroup   ws   =   new   SystemWebSectionGroup();
        CompilationSection   cp   =   ws.Compilation;
        用cp.Debug;就可以得到compilation节内关于"debug"的配置
          AuthenticationSection     as   =   ws.Authentication;  
        用   as.Mode     可以获取   authentication节中关于"mode"的配置,值为AuthenticationMode   枚举之一
AuthenticationMode的取值如下:  
    成员名称   说明  
    Forms   将基于   ASP.NET   窗体的身份验证指定为身份验证模式。    
    None   不指定身份验证。    
    Passport   将   Microsoft   Passport   指定为身份验证模式。    
    Windows   将   Windows   指定为身份验证模式。在使用   Internet   信息服务   (IIS)   身份验证方法(基本、简要、集成   Windows   (NTLM/Kerberos)   或证书)时适用此模式。    

         
附:SystemWebSectionGroup   类的公共属性:  
    名称     说明    
    AnonymousIdentification     获取   anonymousIdentification   节。  
    Authentication     获取   authentication   节。  
    Authorization     获取   authorization   节。  
    BrowserCaps     获取   browserCaps   节。  
    ClientTarget     获取   clientTarget   节。  
    Compilation     获取   compilation   节。  
    CustomErrors     获取   customErrors   节。  
    Deployment     获取   deployment   节。  
    DeviceFilters     获取   deviceFilters   节。  
    Globalization     获取   globalization   节。  
    HealthMonitoring     获取   healthMonitoring   节。  
    HostingEnvironment     获取   hostingEnvironment   节。  
    HttpCookies     获取   httpCookies   节。  
    HttpHandlers     获取   httpHandlers   节。  
    HttpModules     获取   httpModules   节。  
    HttpRuntime     获取   httpRuntime   节。  
    Identity     获取   identity   节。  
    IsDeclarationRequired       获取一个值,该值指示是否需要声明此   ConfigurationSectionGroup   对象。   (从   ConfigurationSectionGroup   继承。)  
    IsDeclared       获取一个值,该值指示是否已声明此   ConfigurationSectionGroup   对象。(从   ConfigurationSectionGroup   继承。)  
    MachineKey     获取   machineKey   节。  
    Membership     获取   membership   节。  
    MobileControls     获取   mobileControls   节。  
    Name       获取此   ConfigurationSectionGroup   对象的名称属性。(从   ConfigurationSectionGroup   继承。)  
    Pages     获取   pages   节。  
    ProcessModel     获取   processModel   节。  
    Profile     获取   profile   节。  
    Protocols     获取   protocols   节。  
    RoleManager     获取   roleManager   节。  
    SectionGroupName       获取与此   ConfigurationSectionGroup   关联的节组名称。(从   ConfigurationSectionGroup   继承。)  
    SectionGroups       获取一个包含所有   ConfigurationSectionGroup   对象的   ConfigurationSectionGroup   对象,这些对象是此   ConfigurationSectionGroup   对象的子对象。(从   ConfigurationSectionGroup   继承。)  
    Sections       获取一个   ConfigurationSectionCollection,它包含此   ConfigurationSectionGroup   中的所有   ConfigurationSection   对象。(从   ConfigurationSectionGroup   继承。)  
    SecurityPolicy     获取   securityPolicy   节。  
    SessionState     获取   sessionState   节。  
    SiteMap     获取   siteMap   节。  
    Trace     获取   trace   节。  
    Trust     获取   trust   节。  
    Type       获取或设置此   ConfigurationSectionGroup   对象的类型。(从   ConfigurationSectionGroup   继承。)  
    UrlMappings     获取   urlMappings   节。  
    WebControls     获取   webControls   节。  
    WebParts     获取   webParts   节。  
    WebServices     获取   webServices   节。  
    XhtmlConformance     获取   xhtmlConformance   节。

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

C# code
    
    
/// <summary> /// 显示消息提示对话框,并进行页面跳转 /// </summary> /// <param name="page"> 当前页面指针,一般为this </param> /// <param name="msg"> 提示信息 </param> /// <param name="url"> 跳转的目标URL </param> public static void ShowAndRedirect(System.Web.UI.Page page, string msg, string url) { StringBuilder Builder = new StringBuilder(); Builder.Append( " <script language='javascript' defer> " ); Builder.AppendFormat( " alert('{0}'); " ,msg); Builder.AppendFormat( " top.location.href='{0}' " ,url); Builder.Append( " </script> " ); // page.RegisterStartupScript("message", Builder.ToString()); page.ClientScript.RegisterStartupScript(page.GetType(), " message " , Builder.ToString()); }

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

假设这样一种模型,显示用GridView,数据源用DataSet。每次获取10条信息,按每页10条分页。
有的时候数据可能不足10条,而客户要求不足10条显示为空行,以下代码解决了这个问题。


C# code
    
    
private DataTable FillBlank( int pageSize, DataTable dt) { if (dt.Rows.Count < pageSize) { for ( int i = dt.Rows.Count - 1 ; i < pageSize; i ++ ) { DataRow dr = dt.NewRow(); dt.Rows.Add(dr); } } return dt; } private void BindGrid(DataTable dt) { GridView.DataSource = dt; GridView.DataBind(); }

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

给大家一个很[color=#008000]COOL的例子吧。
有的时候我们想把网页动起来,我们希望页面上的某些元素可以移动,称之为拖拽。[/color]
原创

HTML code
    
    
<% @ Page Language = " C# " AutoEventWireup = " true " CodeBehind = " Drag.aspx.cs " Inherits = " Test.Drag " %> <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html xmlns ="http://www.w3.org/1999/xhtml" > < head runat ="server" > < title > Untitled Page </ title > < script type ="text/javascript" language ="javascript" > // 为Number增加一个属性,判断当前数据类型是否是数字 Number.prototype.NaN0 = function (){ return isNaN( this ) ? 0 : this ;} // 全局变量 var iMouseDown = false ; var dragObject = null ; // 获得鼠标的偏移量(对象2-对象1) function getMouseOffset(target,ev) { ev = ev || window.event; var docPos = getPosition(target); var mousePos = mouseCoords(ev); return {x:mousePos.x - docPos.x,y:mousePos.y - docPos.y}; } // 获得事件发生的实际位置----------------------对象1 function getPosition(e) { var left = 0 ; var top = 0 ; // 相对位置累加得到实际位置 while (e.offsetParent) { left += e.offsetLeft + (e.currentStyle ? (parseInt(e.currentStyle.borderLeftWidth)).NaN0(): 0 ); top += e.offsetTop + (e.currentStyle ? (parseInt(e.currentStyle.borderTopWidth)).NaN0(): 0 ); e = e.offsetParent; } left += e.offsetLeft + (e.currentStyle ? (parseInt(e.currentStyle.borderLeftWidth)).NaN0(): 0 ); top += e.offsetTop + (e.currentStyle ? (parseInt(e.currentStyle.borderTopWidth)).NaN0(): 0 ); return {x:left,y:top}; } // 获得发生事件鼠标的位置----------------------对象2 function mouseCoords(ev) { if (ev.pageX || ev.pageY) { return {x:ev.pageX,y:ev.pageY}; } return {x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,y:ev.clientY + document.body.scrollTop - document.body.clientTop}; } // 定义可以拖拽的对象 function makeDragable(item) { if ( ! item) return ; // 为可拖拽对象定义一个onmousedown事件的方法 ev = window.event; item.onmousedown = function (ev) { dragObject = this ; mouseOffset = getMouseOffset( this ,ev); return false ; } } // 定义鼠标点下所调用的方法 function mouseDown(ev) { ev = ev || window.event; var target = ev.target || ev.srcElement; if (target.onmousedown || target.getAttribute( ' DragObj ' )) { return false ; } } // 鼠标抬起后释放对象 function mouseUp(ev) { dragObject = null ; // onmouseup事件触发时说明鼠标已经松开,所以设置down变量值为false iMouseDown = false ; } // 鼠标移动 function mouseMove(ev) { ev = ev || window.event; var target = ev.target || ev.srcElement; var mousePos = mouseCoords(ev); if (dragObject) { if (dragObject.style) { // 移动对象 dragObject.style.left = mousePos.x - mouseOffset.x; dragObject.style.top = mousePos.y - mouseOffset.y; } } // lMouseState = iMouseDown; if (dragObject) return false ; } document.onmousedown = mouseDown; document.onmousemove = mouseMove; document.onmouseup = mouseUp; function moveImg() { var img1 = document.getElementById( ' img1 ' ); makeDragable(img1); } </ script > </ head > < body onload ="moveImg()" > < form id ="form1" runat ="server" > < div > < img src ="a.jpg" alt ="" id ="img1" style ="position:absolute;left:0px;top:0px;" /> </ div > </ form > </ body > </ html >

=============================================================
<input   type="file"   οnchange="javascript:document.getElementById('image').src=this.value"/>
<input   type="image"   src=""   id="image"/>
这样在选中要上传的图片时,就可以看见自己要上传的了

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

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

HTML code
    
    
<% @ Page Language = " C# " AutoEventWireup = " true " CodeFile = " 20_解决刷新后回到顶部的问题.aspx.cs " Inherits = " _20_解决刷新后回到顶部的问题 " MaintainScrollPositionOnPostback = " true " %> <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html xmlns ="http://www.w3.org/1999/xhtml" > < head runat ="server" > < title > 无标题页 </ title > </ head > < body > < form id ="form1" runat ="server" > < div > 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> 啊啊 < br /> < asp:Button ID ="Button1" runat ="server" Text ="Button" />< br /> < span style ="color: #ff3333" > 在内容页面的Page指令中,加上MaintainScrollPositionOnPostback="true" </ span ></ div > </ form > </ body > </ html >

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

ENTER键可以让光标移到下一个输入框
<input   οnkeydοwn="if(event.keyCode==13)event.keyCode=9">

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

数据库字符分割

SQL code
    
    
CREATE FUNCTION fn_Split( @sText nvarchar ( 4000 ), @sDelim varchar ( 20 ) = ' ' ) RETURNS @retArray TABLE (idx smallint Primary Key , value varchar ( 8000 )) AS BEGIN DECLARE @idx smallint , @value nvarchar ( 4000 ), @bcontinue bit , @iStrike smallint , @iDelimlength tinyint IF @sDelim = ' Space ' BEGIN SET @sDelim = ' ' END SET @idx = 0 SET @sText = LTrim ( RTrim ( @sText )) SET @iDelimlength = DATALENGTH ( @sDelim ) SET @bcontinue = 1 IF NOT (( @iDelimlength = 0 ) or ( @sDelim = ' Empty ' )) BEGIN WHILE @bcontinue = 1 BEGIN -- If you can find the delimiter in the text, retrieve the first element and -- insert it with its index into the return table. IF CHARINDEX ( @sDelim , @sText ) > 0 BEGIN SET @value = SUBSTRING ( @sText , 1 , CHARINDEX ( @sDelim , @sText ) - 1 ) BEGIN INSERT @retArray (idx, value) VALUES ( @idx , @value ) END -- Trim the element and its delimiter from the front of the string. -- Increment the index and loop. SET @iStrike = DATALENGTH ( @value ) + @iDelimlength SET @idx = @idx + 1 SET @sText = LTrim ( Right ( @sText , DATALENGTH ( @sText ) - @iStrike )) END ELSE BEGIN -- If you can抰 find the delimiter in the text, @sText is the last value in -- @retArray. SET @value = @sText BEGIN INSERT @retArray (idx, value) VALUES ( @idx , @value ) END -- Exit the WHILE loop. SET @bcontinue = 0 END END END ELSE BEGIN WHILE @bcontinue = 1 BEGIN -- If the delimiter is an empty string, check for remaining text -- instead of a delimiter. Insert the first character into the -- retArray table. Trim the character from the front of the string. -- Increment the index and loop. IF DATALENGTH ( @sText ) > 1 BEGIN SET @value = SUBSTRING ( @sText , 1 , 1 ) BEGIN INSERT @retArray (idx, value) VALUES ( @idx , @value ) END SET @idx = @idx + 1 SET @sText = SUBSTRING ( @sText , 2 , DATALENGTH ( @sText ) - 1 ) END ELSE BEGIN -- One character remains. -- Insert the character, and exit the WHILE loop. INSERT @retArray (idx, value) VALUES ( @idx , @sText ) SET @bcontinue = 0 END END END RETURN END



这个出于我要实现尽可能的模糊搜索找来的

 

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

FUNCTION fn_Split(@sText varchar(8000), @sDelim varchar(20) = ' ')
RETURNS @retArray TABLE (idx smallint Primary Key, value varchar(8000))
AS
BEGIN
DECLARE @idx smallint,
@value varchar(8000),
@bcontinue bit,
@iStrike smallint,
@iDelimlength tinyint
IF @sDelim = 'Space'
BEGIN
SET @sDelim = ' '
END
SET @idx = 0
SET @sText = LTrim(RTrim(@sText))
SET @iDelimlength = DATALENGTH(@sDelim)
SET @bcontinue = 1
IF NOT ((@iDelimlength = 0) or (@sDelim = 'Empty'))
BEGIN
WHILE @bcontinue = 1
 
BEGIN
--If you can find the delimiter in the text, retrieve the first element and
--
insert it with its index into the return table.

 
IF CHARINDEX(@sDelim, @sText)>0
 
BEGIN
 
SET @value = SUBSTRING(@sText,1, CHARINDEX(@sDelim,@sText)-1)
   
BEGIN
   
INSERT @retArray (idx, value)
   
VALUES (@idx, @value)
   
END
 
--Trim the element and its delimiter from the front of the string.
  --Increment the index and loop.
SET @iStrike = DATALENGTH(@value) + @iDelimlength
 
SET @idx = @idx + 1
 
SET @sText = LTrim(Right(@sText,DATALENGTH(@sText) - @iStrike))
 
 
END
 
ELSE
 
BEGIN
--If you can抰 find the delimiter in the text, @sText is the last value in
--
@retArray.
SET @value = @sText
   
BEGIN
   
INSERT @retArray (idx, value)
   
VALUES (@idx, @value)
   
END
 
--Exit the WHILE loop.
SET @bcontinue = 0
 
END
 
END
END
ELSE
BEGIN
WHILE @bcontinue=1
 
BEGIN
 
--If the delimiter is an empty string, check for remaining text
  --instead of a delimiter. Insert the first character into the
  --retArray table. Trim the character from the front of the string.
--
Increment the index and loop.
  IF DATALENGTH(@sText)>1
 
BEGIN
 
SET @value = SUBSTRING(@sText,1,1)
   
BEGIN
   
INSERT @retArray (idx, value)
   
VALUES (@idx, @value)
   
END
 
SET @idx = @idx+1
 
SET @sText = SUBSTRING(@sText,2,DATALENGTH(@sText)-1)
 
 
END
 
ELSE
 
BEGIN
 
--One character remains.
  --Insert the character, and exit the WHILE loop.
  INSERT @retArray (idx, value)
 
VALUES (@idx, @sText)
 
SET @bcontinue = 0
 
END
END
END
RETURN
END

下面是调用示例:

declare @no char(100)
set @no='abc,cdesefd,efddc,mgns,aa'
select * from fn_Split(@no,',')



智能分割字符函数

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

<img   src=' <%=   ResolveUrl("~/image/admin_4bg.gif")   %> '     alt   =""/>

这样可以取得了图片的路径,
这个方便用户用户控件时,显示图片的问题!

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

让   FileUpload   文本框只读

C# code
    
    
< asp:FileUpload runat = " server " style = " height:20px; " unselectable = " on " ID = " fileUpdate " />

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

关于WEB页的局部打印问题:

JScript code
    
    
---------------------------------------- < script language = " javascript " > <!-- function PrintNote() { var PrintWin = window.open( ' about:blank ' , ' Print ' ); PrintWin.document.write( ' <object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object> ' + document.all( " PrintContent " ).innerHTML); PrintWin.document.all.WebBrowser.ExecWB( 7 , 1 ); PrintWin.close(); } --> < / script> -------------------------------------------- 内容用 < div > 装起来,并把DIV设置ID < div id = " PrintContent " align = " center " > your GridView < / div> ------------------------------------ < input onclick = " javascript:PrintNote(); " type = " button " value = " 打印 " id = " Button2 " onserverclick = " Button2_ServerClick " runat = " server "/ >


把gridvie控件放入DIV里就可以实现打印了。

 

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

sqlserver   使用一技巧   :

比如有数据表   t_test,   列一是   ID,列二是   name  

1,小王
2,小李
3,小赵

需要得到名称列的值,可以用一句sql实现
declare   @s   varchar(32)

set   @s   =   ''
select   @s   =   @s+   name   from   t_test

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

数据库表的操作

SQL code
    
    
-- ----------------------------列操作----------------------------------- -- 添加列 ALTER TABLE t ADD Mycolumn int identity ( 1 , 1 ) ||not null default ( 0 ) -- 删除列 alter table t drop column Mycolumn -- 修改列 alter table t alter column Mycolumn varchar ( 20 ) not null -- 将表中的数据改为为小数 update t set groups = cast (groups as DECIMAL ( 10 , 3 )) -- 将表字段的类型更改小数 alter table t alter column Yourcolumn DECIMAL ( 10 , 3 )) -- ----------------------------约束操作---------------------------------- -- 加约束(默认值) Alter table t Add constraint C_Mycolumn default ( 30 ) for Mycolumn -- 加约束(check条件) alter table dbo.t add constraint ck_t check ( ' 字段 ' <> ' 字段 ' ) alter table t with nocheck add constraint t_sex check ( [ name ] in (N ' ' ,N ' ' )) -- 加约束(主键) alter table t add constraint t_id primary key (id) -- 删除约束 alter table t drop constraint [ DF_t_Mycolumn ] -- 加列加约束(默认值) alter table t add Mycolumn int CONSTRAINT [ DF_t_Mycolumn ] not null default ( 0 )

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

我也来一个,把DataTable里的内容导出到EXCEL,执行代码就行,什么都不用改,什么都不用设置
Private   Sub   toExcel(ByVal   tb   As   DataTable)
                Dim   dgrid   As   System.Web.UI.WebControls.DataGrid   =   Nothing
                Dim   context   As   System.Web.HttpContext   =   System.Web.HttpContext.Current
                Dim   strOur   As   System.IO.StringWriter   =   Nothing
                Dim   htmlWriter   As   System.Web.UI.HtmlTextWriter   =   Nothing
                If   Not   IsNothing(tb)   Then
                        context.Response.ContentType   =   "application/vnd.ms-excel"
                        context.Response.ContentEncoding   =   System.Text.Encoding.UTF8
                        context.Response.Charset   =   ""

                        strOur   =   New   IO.StringWriter
                        htmlWriter   =   New   System.Web.UI.HtmlTextWriter(strOur)
                        dgrid   =   New   DataGrid
                        dgrid.DataSource   =   tb.DefaultView
                        dgrid.AllowPaging   =   False
                        dgrid.DataBind()

                        dgrid.RenderControl(htmlWriter)
                        context.Response.Write(strOur.ToString)
                        context.Response.End()
                End   If
        End   Sub

 

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

///   <summary>
///   下载文件
///   </summary>
///   <param   name="filepath"> </param>
public   static   void   DownloadFile(string   filepath)
{
string strContentType =   "";
string strFileName =   "";
string strFilePath =   "";
int intIndex1 =   -1;
int intIndex2 =   -1;
int intIndex =   0;

if   (filepath.EndsWith(".doc"))
{
strContentType   =   "application/msword";
}
else   if   (filepath.EndsWith(".xls"))
{
//strContentType   =   "application/x-zaurus-xls"
strContentType   =   "application/vnd.ms-excel";
}
else   if   (filepath.EndsWith(".pdf"))
{
strContentType   =   "application/pdf";
}
else   if   (filepath.EndsWith(".ppt"))
{
//strContentType   =   "application/powerpoint"
strContentType   =   "application/vnd.ms-powerpoint";
}
else   if   (filepath.EndsWith(".jpg")   ¦ ¦   filepath.EndsWith(".jpeg")   ¦ ¦   filepath.EndsWith(".jpe"))
{
strContentType   =   "image/jpeg";
}
else   if   (filepath.EndsWith(".bmp"))
{
strContentType   =   "image/bmp";
}
else   if   (filepath.EndsWith(".gif"))
{
strContentType   =   "image/gif";
}
else   if   (filepath.EndsWith(".zip"))
{
strContentType   =   "application/zip";
}
else   if   (filepath.EndsWith(".txt"))
{
strContentType   =   "text/plain";
}
else
{
strContentType   =   "application/octet-stream";
}

intIndex1   =   filepath.LastIndexOf("/");
intIndex2   =   filepath.LastIndexOf("//");

if   (intIndex1   >   intIndex2)
{
intIndex   =   intIndex1;
}
else
{
intIndex   =   intIndex2;
}

if   (intIndex   >   -1)
{
if   (intIndex   +   1   <   filepath.Length)
strFileName   =   filepath.Substring(intIndex   +   1);
}
else
{
strFileName   =   filepath;
}

//   ファイルパス処理  
if   (filepath.StartsWith("/")   ¦ ¦   filepath.StartsWith("//"))
strFilePath   =   HttpContext.Current.Server.MapPath("/")   +   filepath;
else
strFilePath   =   filepath;

if   (FileUtil.isFileExist(strFilePath))
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType   =   strContentType;
HttpContext.Current.Response.AddHeader("Content-Disposition",   "attachment;   filename="   +   HttpUtility.UrlEncode(strFileName));

HttpContext.Current.Response.WriteFile(strFilePath);
//HttpContext.Current.Response.BinaryWrite(objFileIO.IFileByte(strFilePath));

//HttpContext.Current.Response.End();
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Close();
}
else
{
SetGlobalMessageID(FindKeyValueCutNull(GXML.COMMONMESSAGE,   GXML.DOWNLOAD_FILE_NOEXIST));
}

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

我实在是找不出我哪个是经典的代码了,因为大家太牛了,我才一个三角形,
不过我推荐大家用下这个Anthem.net技术新的ajax方案,我最近项目全用这个,非常好用,不需要写ajax全实现.
Anthem.NET可以在此下载:http://sourceforge.net/project/showfiles.php?group_id=151897&package_id=168043&release_id=493609

里面有教程,

 

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

//将unicode   码转换成汉字     转换如:/uxxx   等等  
private   void   button1_Click(object   sender,   System.EventArgs   e)
{

this.richTextBox2.Text="";

String   MyString   =   this.richTextBox1.Text;
// MyString   =   MyString.ToLower();
MyString   =   MyString.Replace("//u","//");
MyString   =   MyString.Replace("//U","//");
string[]   value1   =   MyString.Split('//');
string   tempValue1   =   "";
string   tempValue2   =   "";

string   strOut     =   "";
foreach   (string   temp   in   value1){
if(temp.Length==0){
continue;
}
try{
  tempValue1   =temp;
  tempValue2   =   "";
if(tempValue1.Length> 4)
{
tempValue1   =   temp.Substring(0,4);
tempValue2   =   temp.Substring(4,temp.Length-4);
}

int   intASCII   =   Convert.ToInt32(tempValue1,       16);    

strOut   +=     ((char)intASCII).ToString()   +   tempValue2;      

}catch{
strOut   +=   temp;
}

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

//将字符   转换成   unicode   码
private   void   button5_Click(object   sender,   System.EventArgs   e)
{
this.richTextBox2.Text   =   "";
string   tempValue   =   "";

foreach(char   c   in   this.richTextBox1.Text)
{
tempValue   =   ((int)c).ToString("X2").ToUpper();
if(tempValue.Length   > =4)
{
this.richTextBox2.Text   +=   "//u"+tempValue;
}
else
{
this.richTextBox2.Text   +=   c.ToString();
}

}

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

html页面里面,将光标定位到文本框的以后一个字符位置处:

JScript code
    
    
// Stpangpang 2005/03/15 光标移动到最后 function LastCursor() { var e = event.srcElement; var r = e.createTextRange(); r.moveStart( ' character ' ,e.value.length); r.collapse( true ); r.select(); }


可以在文本框的   onenter   事件中调用。

 

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

判断指定月份是否在两个日期间函数,详见代码及代码分析.  

SQL code
    
    
/* d1-日期1 d2-日期2 y-年份 m-月份 功能:年份/月份是否在两个日期d1/d2之间,返回bit(0/1) by airzen 20071109 www.haixiaIT.com */ create function dbo.isInDate ( @d1 dateTime , -- 日期1(min) @d2 dateTime , -- 日期2(max) @y int , -- 年份 @m int -- 月份 ) returns bit as begin declare @retV bit declare @t1 int declare @t2 int declare @t3 int set @t1 = year ( @d1 ) * 12 + month ( @d2 ) set @t2 = year ( @d2 ) * 12 + month ( @d2 ) set @t3 = @y * 12 + @m if ( @t3 >= @t1 AND @t3 <= @t2 ) set @retV = 1 else set @retV = 0 return @retV END


  函数原理解析:可以将年份月份(yyyyMM)当做成一个分段式的12进制数据来处理即yyyy   *   12     +   MM   ,那么如果两个   dateTime型日期数据   @d1,@d2   要判断(@y,@m)是否在d1与d2之间的一个日期   就可以如上算法.

如果是三个都是dateTime型变量比较就比较简单了,可以直接用 <   或> 进行比较,

附eg

具体程序调用   (调用2007,10月份的请假信息,同时计算出当月请假时长)
SQL code
    
    
Select WorkNo AS 工号, EmpName AS 姓名, DBO.F_GetDepart(GroupID) AS 部室, Station AS 职位, StationGrade AS 职位级别, DBO.F_GetJiaQiType(type) AS 请假类别, totalDays AS 时长, dbo.getLeaveDaysInMonth(id, 2007 , 10 ) AS 当月时长, ratifier AS 审批人, StartDate AS 开始时间, EndDate AS 结束时间 FROM V_Leave_All Where agree = 4 AND status = 3 AND dbo.isInDate(StartDate,EndDate, 2007 , 10 ) = 1 ORDER BY id DESC

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

不刷新页面换验证码,   呵呵,   不用AJAX哦~~~牛刀是用来杀牛的~~~不是杀鸡的~~~

HTML code
    
    
< img src ="文件路径" onclick ="this.src='文件路径?Math.random()' alt=" valcode" />

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

SQL2000数据库备份          
----------------------------   原创SQL备份数据库   ----------------------------
DECLARE   @DataBase   Nvarchar(100)
DECLARE   @DataPath   Nvarchar(100)
DECLARE   @FileName   Nvarchar(100)      
DECLARE   @BackupFileName   Nvarchar(100)
DECLARE   @DataDescription   Nvarchar(200)
DECLARE   @DataMediaName   Nvarchar(50)
DECLARE   @DataMediaDescription   Nvarchar(200)
DECLARE   @OkInfo   Nvarchar(300)

--   FileName   SQL_Backup.sql
--   Power   by   Love_Computer...
--   http://www.56390.com/
--   Email:   love_computer@163.com
--   Date:   2005-02-06

SET   @DataBase   =   'cnwlw'                           -----数据库
SET   @DataPath   =   'D:/'                               -----路径
SET   @FileName   =   'SQL_Backup'                 -----文件名
SET   @BackupFileName   =   @DataPath   +   @FileName
SET   @BackupFileName   =   @DataPath   +   'SQL_'   +         -----实时备份自动产生文件名,格式[SQL_20050206_16_28]
RTRIM(CONVERT(CHAR(10),GETDATE(),112))   +   '_'   +  
RTRIM(DATEPART(HOUR,GETDATE()))   +   '_'   +  
LTRIM(DATEPART(MINUTE,GETDATE()))
SET   @DataDescription   =   'SQL语句产生的备份,备份时间:'   +   CONVERT(CHAR(19),GETDATE(),121)         --描述
SET   @DataMediaName   =   'Love_Computer   Backup'           ---媒体
SET   @DataMediaDescription   =   'Power   by   Love_Computer...   Email:   love_computer@163.com'       --媒体描述
SET   @OkInfo   =   '数据库   '   +   @DataBase   +   '   成功备份至   '   +   @BackupFileName

-----希望大家告诉我其中的错误   谢谢!!!-----
-----Email:   love_computer@163.com   -----------

BACKUP   DATABASE   @DataBase   TO   DISK   =   @BackupFileName
WITH   NOINIT   ,   NOUNLOAD   ,   NOSKIP   ,   STATS   =   10   ,   NOFORMAT   ,
NAME   =   @DataBase   ,   DESCRIPTION   =   @DataDescription   ,  
MEDIANAME   =   @DataMediaName   ,   MEDIADESCRIPTION   =   @DataMediaDescription

PRINT   @OkInfo
-------------------   End   ---------------------

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

当用户点击按钮时,按钮变成灰色防止用户还上次还未提交完时,又提交一次
代码如下:

<asp:Button   ID="Button1"   UseSubmitBehavior="false"   OnClientClick="this.value='提交

中……';this.disabled=true;"   runat="server"   Text="提交"   OnClick="Button1_Click"   />

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

让GridView响应单击,双击事件的简单方法:
添加选择命令字段,并设置为不可见!
如DataView   ID   为   DataView1.然后在RowDataBound事件中,加上:

C# code
    
    
if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes.Add( " onclick " , " __doPostBack('GridView1','Select$ " + e.Row.RowIndex + " '); " ); }

=========================================================
}

 

 



<% @ Page Language = " C# " AutoEventWireup = " true " CodeFile = " 26_虚线效果.aspx.cs " Inherits = " _26_虚线效果 " %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
   
< title > 无标题页 </ title >
  
<% -- 方法二 -- %>
   
< STYLE type =text/css >
.dotline
{
BORDER-BOTTOM-STYLE
: dotted ; BORDER-LEFT-STYLE : dotted ; BORDER-RIGHT-STYLE : dotted ; BORDER-TOP-STYLE : dotted
}
</ STYLE >


</ head >
< body >
   
< form id ="form1" runat ="server" >
   
< div >
       
< hr style ="BORDER-BOTTOM-STYLE: dotted; BORDER-LEFT-STYLE: dotted; BORDER-RIGHT-STYLE: dotted; BORDER-TOP-STYLE: dotted" color =#000000 size =1 />
       方法2:
       
< hr class =dotline color =green size =1 />
   
</ div >
   
</ form >
</ body >
</ html >

 

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

SQL2005增加了不少新特性,其中NTILE和ROW_NUMER使得我们不再为SQL如何灵活方便的分页伤脑筋了(不必再羡慕Oracle等数据库了)。
  下面就是一个很简单的分页查询语句:  
DECLARE   @rows_per_page   AS   INTEGER
DECLARE   @current_page   AS   INTEGER
DECLARE   @total_pages   AS   INTEGER

--   设置每页的行数
SET   @rows_per_page   =   20
--   设置要显示的页号(从1开始)
SET   @current_page   =   2
--   计算总页数
SELECT   @total_pages   =   COUNT(*)   /   @rows_per_page
FROM   testtable;

--   列出指定页的内容
WITH   t   AS
(
    SELECT   NTILE(@total_pages)   OVER(ORDER   BY   id)   AS   page_number,   *  
    FROM   testtable
)
SELECT   *   from   t  
WHERE   page_number   =   @current_page     程序简单到可以不用说明的程度。
  我们可以利用上述简单的语句,变化排序条件和查询表,就可以做出一个很通用的分页查询的存储过程或查询语句了。

  同样的,使用ROW_NUMBER也可以做到分页查询:
DECLARE   @rows_per_page   AS   INTEGER
DECLARE   @current_page   AS   INTEGER
DECLARE   @start_row_num   AS   INTEGER

--   设置每页的行数
SET   @rows_per_page   =   20
--   设置要显示的页号(从1开始)
SET   @current_page   =   2
--   设置开始行号
SET   @start_row_num   =   (@current_page   -   1)   *   @rows_per_page

WITH   t   AS
(
    SELECT   ROW_NUMBER()   OVER(ORDER   BY   id)   AS   row_number,   *  
    FROM   testtable
)
SELECT   *   from   t  
WHERE   row_number   BETWEEN   @start_row_num   AND   @start_row_num   +   @rows_per_page  似乎更简单的样子。
-----------------------------------------

在C#1.x的版本中,一个值类型变量是不可以被赋予null值的,否则会产生异常。在C#2.0中,微软提供了Nullable类型,允许用它定义包含null值(即空值)的数据类型,这对处理数据库中包含可选字段以及很多方面都有很大帮助。  
定义Nullable类型

定义一个nullable类型非常类似于定义一个非nullable类型。不同之处在于使用类型修饰符“?”。比如定义一个整型如下:

int   myInt   =   1;
要使一个整型变量可以存储一个null值,可以如下声明:

int?   myNullableInt   =   1;
这两个变量看起来似乎是一样的。但事实并非如此。实际上,Nullable类型是一个结构体,它有两个公开可读字段:HasValue和Value。HasValue是一个布尔值,当有值存储时它为真,当变量值为null时HasValue为假。当HavValue为真是时,可以取得变量的值;为假时,当尝试取得变量的值时会抛出一个异常。

现在null是C#的一个关键字,它可以被赋给一个Nullable型变量。下面是对Nullable型变量赋值的两种有效方式。

double?   myDouble   =   3.14159;
double?   myOtherDouble   =   null;
可以看到,myDouble被赋给一个值,它也可以被赋以null。在第二个语句中,myOtherDouble被初始化为null——在一个非Nullable型变量中这样做会产生异常。

  使用nullable类型
        一个Nullable型变量可以像一般值类型那样使用。在编译过程中Nullable型变量和非Nullable型变量会进行隐式田转换。就是说我们可以把一个标准整型赋给一个整型Nullable变量,反之亦然。参考下面示例代码:

int?   nFirst   =   null;int     Second   =   2;  
nFirst   =   Second;         //   可以nFirst   =   123;               //   可以Second   =   nFirst;         //也可以,因为此时nFirst==123  
nFirst   =   null;             //   可以Second   =   nFirst;         //   抛出异常,   Second   是一个非nullable型变量。         可以看到,只要一个Nullable型变量的值不是null,它就可以和一个非Nullable型变量交换变量的值。如果包含null值,就会抛出异常。为避免异常发生,可以利用Nullable型变量的HasValue属性。
  if   (nFirst.HasValue)   Second   =   nFirst;

如上所示,如果nFirst   含有一个值,这个赋值语句就会运行;否则,就会跳过。  

在Nullable值中使用操作符:Lifed   Operators【1】
        两个相同类型的Nullable型和非Nullable型变量除了可以相互自动转化之外,还可以通过操作符在它们中进行操作。参考下面代码:

int   ValA   =   10;int?   ValB   =   3;
int?   ValC   =   ValA   *   ValB;     //ValC==30  
int   ValA   =   10;int?   ValB   =   null;
int?   ValC   =   ValA   *   ValB;     //ValC==null  
int   ValA   =   10;int?   ValB   =   null;
int?   ValC   =   ValA   +   ValB;     //ValC仍然是null;         可以看到,两个操作数只要有任何一个是null,得到的结果也一定是null,不管是加减还是乘除。当然,如果操作数不是null   ,则结果还是按原来操作符运算得到的结果。在上面的代码中,如果ValC不是Nullable类型,情况会怎么样呢?如以下代码:
int   ValA   =   10;int?   ValB   =   3;
int   ValC   =   ValA   *   ValB;         //   ValC   不是Nullable类型
上面这段代码会抛出一个异常。ValA   *   ValB的结果是null,它不能被赋给一个非Nullable变量ValC。因为,会产生异常。
  关系运算         两个都是null值的Nullable变量被认为是相等的,而一个值为null的变量和其它任何非null值的变量都是不相等的。如下面示例代码:
int   abc   =   123;
int   xyz   =   890;

int?   def   =   null;
int?   uvw   =   123;

Comparison           Result
abc   ==   xyz           //   false
abc   ==   def           //   false
def   ==   null         //   true

abc   ==   uvw           //   true
uvw   ==   null         //   false
uvw   !=   null         //   true

在其它关系运算中,如果其中一个或两个操作数为null,则结果一定是false。如下面示例代码(仍然使用上面定义的变量):
  Comparison         Result
abc   >   uvw           //   false,   they   are   equal
abc   <   def           //   false,   def   is   null
uvw   <   def           //   false,   because   def   is   null
def   >   null         //   false,   because   right   side   is   null
uvw   >   null         //   false,   because   right   side   is   null


移除空值           C#2.0同时也提供一个新操作符’??’用来合并空值。其语法格式如下:returnValue   =   first   ??   second;在这个语句中,如果first为非null,则first的值会被赋给returnValue;如果first为null,则second会被赋给returnValue。
注:returnValue可以是Nullable类型也可以是非Nullable类型。  
如果要将一个Nullable变量的值赋给一个非Nullable变量,可以用下面方法:int?   ValA=   123;int?   ValB   =   null;

int   NewVarA   =   ValA   ??   -1;
int   NewVarB   =   ValB   ??   -1;
            上面这段代码运行完以后,NewVarA的值为123,因为ValA的值不是null。而NewVarB值变为   -1,因为ValB为null。这就允许我们利用一个null值将一个变量转变成一个默认值。在上面的代码中,这个默认值为   -1。

  后记:这几天开始学习.NET2.0和C#2.0技术,在Codeguru上面看到这篇文章,本来想把它翻译出来再post到这里,不过翻译了一半就发现有很多专业术语虽然我可以理解它的意思,它却不能用中文正确表达出来,所以就放弃了翻译全文的想法,只是按照自己的理解把文章的意思写出来。有兴趣的朋友可以去看英文原文,其实我发现看英文更加容易理解。
------------------------------------------------

关于网页的打印  

1、在页面的代码头部处加入JavaScript:

<script   language=javascript>
function   doPrint()   {  
bdhtml=window.document.body.innerHTML;  
sprnstr=" <!--startprint--> ";  
eprnstr=" <!--endprint--> ";  
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);  
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));  
window.document.body.innerHTML=prnhtml;  
window.print();  
}
</script>

  2、在页面正文处加上 <!--startprint--> 与 <!--endprint--> 标识。也就是在需要用户打印保存的正文所对应的html处附加上。

  3、截取内容部分已完成,现在加个“打印”的链接: <a   href="javascript:;"   onClick="doPrint()"> 打印教程 </a>

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

QQ天气预报代码

HTML code
   
   
< IFRAME ID ='ifm2' WIDTH ='189' HEIGHT ='190' ALIGN ='CENTER' MARGINWIDTH ='0' MARGINHEIGHT ='0' HSPACE ='0' VSPACE ='0' FRAMEBORDER ='0' SCROLLING ='NO' SRC ='http://weather.qq.com/inc/ss248.htm' ></ IFRAME >


说明:这种代码的优点是城市可以自定,ss248.htm是合肥的城市编码,记得更换成自己的城市编码:
ss28.htm   乌鲁木齐    ss232.htm   桂林 ss69.htm   呼和浩特 ss295.htm   南宁
ss218.htm   长沙  ss287.htm   厦门  ss292.htm   广州  ss82.htm   石家庄
ss125.htm   北京  ss150.htm   拉萨  ss166.htm   成都  ss103.htm   长春
ss296.htm   深圳  ss303.htm   海口  ss211.htm   武汉  ss276.htm   福州
ss2.htm   澳门   ss280.htm   台北  ss244.htm   南京  ss252.htm   上海
ss179.htm   昆明  ss227.htm   贵阳  ss189.htm   郑州  ss140.htm   济南
ss56.htm   西宁   ss212.htm   重庆  ss78.htm   银川  ss248.htm   合肥
ss264.htm   南昌   ss1.htm   香港  ss186.htm   西安  ss115.htm   沈阳
ss84.htm   太原   ss57.htm   兰州  ss17.htm   哈尔滨  ss127.htm   天津

 

JScript code
   
   
function DoPass(ID) { var s = new Date(); var Irandom = Math.random(); window.showModalDialog( " DataPass.aspx?id= " + ID + " &iii= " + Irandom, "" , " dialogWidth:600px;dialogHeight:320px;status:no;help:no;scrolling=no;scrollbars=no " ); location.href = location.href; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值