都是偷来的
技巧:图片使网站丰富起来,但有的时候不是所有图片都能正常显示的。这个时候会出现一个或多个红叉叉,这个技巧是告诉你如何处理的。
在DataGrid和GridView中对表头设定背景图片
{
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中对表头设定背景图片,不需要后台代码。
AutoGenerateColumns ="false" Visible ="true" ShowFooter ="false" >
< HeaderStyle CssClass ="grid-head" />
</ asp:GridView >
font-size : 14px ;
font-weight : normal ;
color : #FFFFFF ;
background-image : url(../images/grid-bg.gif) ;
text-align : center ;
vertical-align : middle ;
height : 28px ;
}
互斥对象.很多情况下存在互斥对象,我通常这么处理
... {
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; }