2006年10月30日
#
摘要: 最新版本的AutoCompleteExtender不工作,CTP 1.0 Beta版
主要发现 AutoCompleteExtender不触发WebService的工作函数
WebService.cs文件 作如下改动后,可正常使用
1、引用Microsoft.Web.Script.Services;
2、将[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]]两句删除掉
增加[ScriptService]
即可
阅读全文
2006年10月16日
#
Sql Server 2005自定义分页
作者:minerva 日期:2006-09-20
在sql server 2000中,要实现显示某一页,就返回那一页数据的效果的方法实在不尽人意.网上很多通用的分页存储过程,但看着就头大.如果使用我前面提到的使用in,not in,top来进行返回特定页,特殊的限制又会比较多(比如ID要递增).现在Sql Server 2005中提供了一个函数ROW_NUMBER(),可以使自定义分页变得简单许多.
我们先来看看ROW_NUMBER()是干什么的.执行下面这段SQL语句:
Select [ReportID],[UserName], [ReportID],
[TimeStart], [TimeEnd],ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM [ExecutionLog]
执行结果如下图所示:
很简单,ROW_NUMBER() 就是生成一个顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY ReportID).现在,你看到了自定义分页的影子了吗?:)下面,我们看看怎么具体应用这个RowNo进行分页.
现在,假设我每一页的数据是10条,我们就可以使用如下所示的SQL语句返回指定页的数据:
@"
Select TOP 10 *
FROM
(
Select top 10 [InstanceName], [UserName], [ReportID],
[TimeStart], [TimeEnd],ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM [ExecutionLog]
) AS A
Where RowNo > " + pageIndex*10
pageIndex就是我们需要数据的页数.很简单,不是吗?并且,这种方式几乎没有什么限制,因为他相当于对于任何检索,都生成了一个新的排序列.我们就可以使用该列进行自定义分页.
from http://0x00.blogchina.com/2460998.html
前些日子,有很多朋友说需要C#导出到Excel的代码,现共享给大家
/// <summary>
/// 读取Excel文档
/// </summary>
/// <param name="Path">文件名称</param>
/// <returns>返回一个数据集</returns>
public DataSet ExcelToDS(string Path)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel="select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds,"table1");
return ds;
}
/// <summary>
/// 写入Excel文档
/// </summary>
/// <param name="Path">文件名称</param>
public bool SaveFP2toExcel(string Path)
{
try
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
System.Data.OleDb.OleDbCommand cmd=new OleDbCommand ();
cmd.Connection =conn;
//cmd.CommandText ="UPDATE [sheet1$] SET 姓名='2005-01-01' WHERE 工号='日期'";
//cmd.ExecuteNonQuery ();
for(int i=0;i<fp2.Sheets [0].RowCount -1;i++)
{
if(fp2.Sheets [0].Cells[i,0].Text!="")
{
cmd.CommandText ="INSERT INTO [sheet1$] (工号,姓名,部门,职务,日期,时间) VALUES('"+fp2.Sheets [0].Cells[i,0].Text+ "','"+
fp2.Sheets [0].Cells[i,1].Text+"','"+fp2.Sheets [0].Cells[i,2].Text+"','"+fp2.Sheets [0].Cells[i,3].Text+
"','"+fp2.Sheets [0].Cells[i,4].Text+"','"+fp2.Sheets [0].Cells[i,5].Text+"')";
cmd.ExecuteNonQuery ();
}
}
conn.Close ();
return true;
}
catch(System.Data.OleDb.OleDbException ex)
{
System.Diagnostics.Debug.WriteLine ("写入Excel发生错误:"+ex.Message );
}
return false;
}
2006年10月12日
#
HTML
中的转义字符
HTML中<, >,&等有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用。使用这三个字符时,应使用它们的转义序列,如下所示:
|
& 或 &
|
&
|
和
|
|
< 或 <
|
<
|
小于号
|
|
> 或 >
|
>
|
大于号
|
|
"
|
"
|
双引号
|
|
|
|
|
空格
|
|
©
|
©
|
版权符
|
|
®
|
®
|
注册符
|
|
|
|
|
|
|
前者为字符转义序列,后者为数字转义序列。数字转为字符对应的ASCII码值。例如 & lt; font >显示为,<font>,若直接写为则被认为是一个链接签。
需要说明的是:
a. 转义序列各字符间不能有空格;
b. 转义序列必须以";"结束;
c. 单独的&不被认为是转义开始;
d.区分大小写。
另一个需要转义的字符是引号,它的转义序列为"" "或"""
HTML使用的字符集是ISO &859 Larin-1字符集,该字符集中有许多标准键盘上无法输入的字符。对这些特殊字符只能使用转义序列。
XML转义字符
不合法的XML字符必须被替换为相应的实体。
如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该像下面那样书写代码:
<message>if salary < 1000 then</message>
为了避免出现这种情况,必须将字符"<" 转换成实体,像下面这样:
<message>if salary < 1000 then</message>
下面是五个在XML文档中预定义好的实体:
|
<
|
<
|
小于号
|
|
>
|
>
|
大于号
|
|
&
|
&
|
和
|
|
'
|
'
|
单引号
|
|
"
|
"
|
双引号
|
实体必须以符号"&"开头,以符号";"结尾。
注意: 只有"<" 字符和"&"字符对于XML来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是一个好习惯。
2006年10月11日
#
1、将每个属性用字段的方式存数据库,一个字,烦
2、如果属性不需要检索、排序等操作,可以将整个对象存数据库
方法:
先序列化,以byte[] 的形式将数据存储到数据库的二进制字段(varbinary(MAX))
读取的时候反序列化,再显式转换为对象
优点:性能好,占数据少
缺点:如果你更改了对象属性的话,以前存储的对象信息你就看不懂了,全是二进制
最佳方案,以xml的模式存储到数据库
System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Soap.SoapFormatter();
System.IO.MemoryStream mem = new System.IO.MemoryStream();
formatter.Serialize(mem, 对象名);
byte[] buffer = new byte[mem.Length];
mem.Read(buffer, 0, Convert.ToInt32(mem.Length));
string xml =System.Text.Encoding.UTF8.GetString(buffer);
2006年9月26日
#
如何增加字段描述,取得字段描述,我也有回答,也看到其他同仁的答案,这里整理一下!
新增:我们知道在SQL Server 2000中,Microsoft添加了扩展属性,用于帮助用户在多个数据库对象上定义和操作用户定义的属性。
exec sp_addextendedproperty N'MS_Description', N'字段描述', N'user', N'dbo', N'table', N'表名', N'column', N'字段名'
GO
例如:EXEC sp_addextendedproperty N'MS_Description',N'地址',N'user', dbo,N'table', N'a', N'column', a_add
GO--我的表是a,要给字段a_add加上字段描述:地址
其他相关:
删除:
EXEC sp_dropextendedproperty N'MS_Description',N'user', dbo,N'table', N'表名', N'column', 字段名
修改:
EXEC sp_updateextendedproperty N'MS_Description', N'字段描述', N'user', dbo,N'table',N'表名', 'column', 字段
至于查询出来,sql server有提供系统函数fn_listextendedproperty ():
--获取某一个字段的描述
SELECT *
FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '表名', 'column', default)--其他变数,按照你的要求你照写即可,只要表名换成你的
where objname = '字段名'
另外也可以自己查询系统表:
SELECT o.name AS tableName, c.name AS columnName, p.[value] AS Description
FROM sysproperties p INNER JOIN
sysobjects o ON o.id = p.id INNER JOIN
syscolumns c ON p.id = c.id AND p.smallid = c.colid
WHERE (p.name = 'MS_Description')
ORDER BY o.name
摘自:http://www.5250.com/txt/data/587843.html
2006年9月25日
#
摘要: 首先,添加引用:Microsoft.SqlServer.Management.SmoMicrosoft.SqlServer.ConnectionInfo然后创建数据库集合对象public static string ReturnMemoInfo{Server srv = new Server(srvname);Microsoft.SqlServer.Management.Smo.DatabaseC...
阅读全文
2006年9月18日
#
摘要: using System;using System.IO;using System.Diagnostics;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web.Security;using System.Web;using Syste...
阅读全文
2006年9月15日
#
摘要: 在网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释),参考了网上的一些文章及.net sdk相关内容.QQROOM网络家园的图片上传用到了所有的4种生成方式. /// <summary> /// 生成缩略图 /// </summary> /// <p...
阅读全文