“/QCZhuangOA”应用程序中的服务器错误。
“/QCZhuangOA/FM/FileUpload/课程�?doc”不是有效的虚拟路径。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: “/QCZhuangOA/FM/FileUpload/课程�?doc”不是有效的虚拟路径。
源错误:
行 18: // retrieve the path of the file to download, and create
行 19: // a FileInfo object to read its properties
行 20: string path = Server.MapPath(Request.Params["File"]);
行 21: System.IO.FileInfo file = new System.IO.FileInfo(path);
行 22:
|
posted @
2008-03-26 01:32 潘奕涛 阅读(410) |
评论 (0) |
编辑
摘要: .net 1.1中的解决方法(转)1建立一个DataSetHelper类(DataSetHelper.cs)publicclassDataSetHelper...{publicDataSetds;publicDataSetHelper(refDataSetDataSet)...{ds=DataSet;}publicDataSetHelper()...{ds=null;}privateboolCol...
阅读全文
posted @
2008-02-17 23:14 潘奕涛 阅读(688) |
评论 (0) |
编辑
摘要: 1C#代码与javaScript函数的相互调用23问:41.如何在JavaScript访问C#函数?52.如何在JavaScript访问C#变量?63.如何在C#中访问JavaScript的已有变量?74.如何在C#中访问JavaScript函数?89问题1答案如下:10javaScript函数中执行C#代码中的函数:11方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_cl...
阅读全文
posted @
2007-12-10 03:05 潘奕涛 阅读(353) |
评论 (0) |
编辑
摘要: 文章转自HelloSnoopy:http://www.cnblogs.com/hellosnoopy/archive/2004/12/01/71312.html下面演示了用户控件调用父页面SetLaeble方法。父页面类型用反射的方法获取,这避免了不同页面调用同样时,需要类型转换的问题(不用写很多case了:))。当然还有一种方法是父页面去实现一个接口,即去实现SetLabel方法,uc把this...
阅读全文
posted @
2007-12-08 14:57 潘奕涛 阅读(356) |
评论 (2) |
编辑
posted @
2007-12-01 16:06 潘奕涛 阅读(390) |
评论 (0) |
编辑
sql server使用convert来取得datetime日期数据,以下实例包含各种日期格式的转换
语句及查询结果:
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
说明:
使用 CONVERT:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
参数
expression
是任何有效的 Microsoft® SQL Server™ 表达式。。
data_type
目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。
length
nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。
style
日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。
在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。
不带世纪数位 (yy) 带世纪数位 (yyyy)
标准
输入/输出**
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)
1 101 美国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss.mmm(不含空格)
- 130* Hijri**** dd mon yyyy hh:mi:ss:mmmAM
- 131* Hijri**** dd/mm/yy hh:mi:ss:mmmAM
* 默认值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
** 当转换为 datetime时输入;当转换为字符数据时输出。
*** 专门用于 XML。对于从 datetime或 smalldatetime 到 character 数据的转换,输出格式如表中所示。对于从 float、money 或 smallmoney 到 character 数据的转换,输出等同于 style 2。对于从 real 到 character 数据的转换,输出等同于 style 1。
****Hijri 是具有几种变化形式的日历系统,Microsoft® SQL Server™ 2000 使用其中的科威特算法。
重要 默认情况下,SQL Server 根据截止年份 2049 解释两位数字的年份。即,两位数字的年份 49 被解释为 2049,而两位数字的年份 50 被解释为 1950。许多客户端应用程序(例如那些基于 OLE 自动化对象的客户端应用程序)都使用 2030 作为截止年份。SQL Server 提供一个配置选项("两位数字的截止年份"),借以更改 SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。
当从 smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从 datetime 或 smalldatetime 值进行转换时,可以通过使用适当的 char 或 varchar 数据类型长度来截断不需要的日期部分。
posted @
2007-12-01 01:17 潘奕涛 阅读(195) |
评论 (0) |
编辑
1。比较时间大小的实验
string st1="12:13";
string st2="14:14";
DateTime dt1=Convert.ToDateTime(st1);
DateTime dt2=Convert.ToDateTime(st2);
DateTime dt3=DateTime.Now;
if(DateTime.Compare(dt1,dt2)>0)
msg.Text=st1+">"+st2;
else
msg.Text=st1+"<"+st2;
msg.Text+="\r\n"+dt1.ToString();
if(DateTime.Compare(dt1,dt3)>0)
msg.Text+="\r\n"+st1+">"+dt3.ToString();
else
msg.Text+="\r\n"+st1+"<"+dt3.ToString();
2。计算两个时间差值的函数,返回时间差的绝对值:
private string DateDiff(DateTime DateTime1,DateTime DateTime2)
{
string dateDiff=null;
try
{
TimeSpan ts1=new TimeSpan(DateTime1.Ticks);
TimeSpan ts2=new TimeSpan(DateTime2.Ticks);
TimeSpan ts=ts1.Subtract(ts2).Duration();
dateDiff=ts.Days.ToString()+"天"
+ts.Hours.ToString()+"小时"
+ts.Minutes.ToString()+"分钟"
+ts.Seconds.ToString()+"秒";
}
catch
{
}
return dateDiff;
}
3。实现计算DateTime1-36天=DateTime2的功能
TimeSpan ts=new TimeSpan(40,0,0,0);
DateTime dt2=DateTime.Now.Subtract(ts);
msg.Text=DateTime.Now.ToString()+"-"+ts.Days.ToString()+"天\r\n";
msg.Text+=dt2.ToString();
该文章转载自网络大本营:http://www.xrss.cn/Info/8182.Html
posted @
2007-11-30 13:46 潘奕涛 阅读(200) |
评论 (0) |
编辑
文章出处:http://dev.csdn.net/article/81737.shtm
需要在sql server里用到数组这样的数据结构.而transact-sql没有内建数组,听说可以用字符串配合临时表来实现,自己试了,解决方法如下 :
create proc [dbo].[CreateArray]
@string varchar(1024)
as
create table #array (id int identity,value varchar(32))
set @string='insert #array select '''+replace(@string,',','''as str union all select ''')+''''
exec(@string)
select * from #array

go
执行如下 :
exec CreateArray 'CChess,Dig,GoBang,LandLord,Majiang'
posted @
2007-11-30 00:16 潘奕涛 阅读(155) |
评论 (0) |
编辑
1.前言
当对GridView控件进行数据绑定时,如果绑定的记录为空,网页上就不显示GridView,造成页面部分空白,页面布局结构也受影响。下面讨论的方法可以让GridView在没有数据记录的时候显示表的字段结构和显示提示信息。
GridView要绑定的字段和temple的字段一样,在这里我们利用GridView原有的功能,设定当数据为空是显示“Data Is Empty”,如果没有设定EmptyDataText属性,当绑定的记录为空时,GridView将不在页面显示。
4.数据显示
4.1普通空记录显示
编写ButtonNormalBind的事件函数ButtonNormalBind_Click,添加如下代码,来测试没有经过处理的GridView显示情况:
protected void ButtonNormalBind_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("temple_id");
dt.Columns.Add("temple_name");
dt.Columns.Add("location");
dt.Columns.Add("build_date");
this.GridViewEmptyDataTest.DataSource = dt;
this.GridViewEmptyDataTest.DataBind();
}
执行这些代码后,GridView显示结果如下图所示:
可以看到这样简单的提示看不出GridView的结构来,在大多数的实际应用中我们希望看到GridView到底有哪些字段。
4.2增加空行来显示GridView的结构
我们知道只要GridView绑定的DataTable有一行记录,GridView就会显示表头,所以当DataTable为空时我们增加一个空行从而显示表头。
我们把代码改成如下所示:
DataTable dt = new DataTable();
dt.Columns.Add("temple_id");
dt.Columns.Add("temple_name");
dt.Columns.Add("location");
dt.Columns.Add("build_date");
if (dt.Rows.Count == 0)
{
dt.Rows.Add(dt.NewRow());
}
this.GridViewEmptyDataTest.DataSource = dt;
this.GridViewEmptyDataTest.DataBind();
在每次绑定前判断,如果为空就增加一空行,这样绑定的结果如下图所示:
可以看得表头已经可以显示了,但是显示的空行没有任何数据也让人费解,可不可以增加一下提示信息呢?
4.3增加空记录提示
我们在数据绑定后增加一些代码对GridView进行一下处理,让显示结果更友好。在this.GridViewEmptyDataTest.DataBind();后面增加代码如下所示:
int columnCount = dt.Columns.Count;
GridViewEmptyDataTest.Rows[0].Cells.Clear();
GridViewEmptyDataTest.Rows[0].Cells.Add(new TableCell());
GridViewEmptyDataTest.Rows[0].Cells[0].ColumnSpan = columnCount;
GridViewEmptyDataTest.Rows[0].Cells[0].Text = "没有记录";
GridViewEmptyDataTest.Rows[0].Cells[0].Style.Add("text-align", "center");
改良后的显示结果如下图所示:
看来显示结果已经达到了我们的要求,但是当页面上有其他按钮操作导致页面PostBack时,页面再次显示确没有了提示信息变成如下图所示的样子:
这并不是我们想要的。
4.4防止PostBack时页面显示变化
为了防止显示改变我们在Page_Load事件里添加如下代码,从而重新绑定GridView:
if (IsPostBack)
{
//如果数据为空则重新构造Gridview
if (GridViewEmptyDataTest.Rows.Count == 1 && GridViewEmptyDataTest.Rows[0].Cells[0].Text == "没有记录")
{
int columnCount = GridViewEmptyDataTest.Columns.Count;
GridViewEmptyDataTest.Rows[0].Cells.Clear();
GridViewEmptyDataTest.Rows[0].Cells.Add(new TableCell());
GridViewEmptyDataTest.Rows[0].Cells[0].ColumnSpan = columnCount;
GridViewEmptyDataTest.Rows[0].Cells[0].Text = "没有记录";
GridViewEmptyDataTest.Rows[0].Cells[0].Style.Add("text-align", "center");
}
}
这下我们的控件终于可以按我们的要求显示了,但是为了代码的重用,当一个项目里有多个GridView时,避免充分些相同的代码,我们需要把代码封装成类,从而让所有的GridView数据绑定时都可以轻易地实现我们的要求。
4.5封装
类的封装代码如下所示:
using System.Data;
using System.Web.UI.WebControls;
/// <summary>
/// Gridview绑定的数据记录为空时显示Gridview的表头,并显示没有记录的提示
/// </summary>
public class GridviewControl
{
//当Gridview数据为空时显示的信息
private static string EmptyText = "没有记录";
public GridviewControl()
{
}
/// <summary>
/// 防止PostBack后Gridview不能显示
/// </summary>
/// <param name="gridview"></param>
public static void ResetGridView(GridView gridview)
{
//如果数据为空则重新构造Gridview
if (gridview.Rows.Count == 1 && gridview.Rows[0].Cells[0].Text == EmptyText)
{
int columnCount = gridview.Columns.Count;
gridview.Rows[0].Cells.Clear();
gridview.Rows[0].Cells.Add(new TableCell());
gridview.Rows[0].Cells[0].ColumnSpan = columnCount;
gridview.Rows[0].Cells[0].Text = EmptyText;
gridview.Rows[0].Cells[0].Style.Add("text-align", "center");
}
}
/// <summary>
/// 绑定数据到GridView,当表格数据为空时显示表头
/// </summary>
/// <param name="gridview"></param>
/// <param name="table"></param>
public static void GridViewDataBind(GridView gridview, DataTable table)
{
//记录为空重新构造Gridview
if (table.Rows.Count == 0)
{
table = table.Clone();
table.Rows.Add(table.NewRow());
gridview.DataSource = table;
gridview.DataBind();
int columnCount = table.Columns.Count;
gridview.Rows[0].Cells.Clear();
gridview.Rows[0].Cells.Add(new TableCell());
gridview.Rows[0].Cells[0].ColumnSpan = columnCount;
gridview.Rows[0].Cells[0].Text = EmptyText;
gridview.Rows[0].Cells[0].Style.Add("text-align", "center");
}
else
{
//数据不为空直接绑定
gridview.DataSource = table;
gridview.DataBind();
}
//重新绑定取消选择
gridview.SelectedIndex = -1;
}
}
你可以把这个类编译成DLL,让各个地方调用。
4.6使用示例
这个类的使用很简单,就是在每次进行数据绑定是调用GridViewDataBind,这个函数的第一个参数是要绑定数据的GridView第二个参数是包含数据字段列的DataTable,可能为空可能不空,如果数据不空,函数则自动进行正常绑定,否则显示“没有记录”的提示。
上面的按钮事件的代码可以改成如下所示:
DataTable dt = new DataTable();
dt.Columns.Add("temple_id");
dt.Columns.Add("temple_name");
dt.Columns.Add("location");
dt.Columns.Add("build_date");
GridviewControl.GridViewDataBind(this.GridViewEmptyDataTest, dt);
最后在Page_Load中对本页面所有GridView调用ResetGridView函数,如下所示:
if (IsPostBack)
{
GridviewControl.ResetGridView(this.GridViewEmptyDataTest);
}
在此提供一个网站测试源码,可以按照2中所说的数据表建立test数据库,并在表中加入相应数据进行测试,记得把连接串改一下哦。
测试源码:http://dl2.csdn.net/down4/20071008/08205401208.rar
5.总结
MS的asp.net为我们提供了方便好用的控件,如果适当地对这些控件的使用方法作些小改动就能做出更加完美的效果来。
|
|
文章来源:http://blog.sina.com.cn/s/blog_4a5e327701000b7x.html
posted @
2007-11-19 15:44 潘奕涛 阅读(515) |
评论 (0) |
编辑
控件设置:
<asp:DataList id="dlEditItem" runat="server" DataKeyField="EmployeeID">
<HeaderTemplate>
人员信息
</HeaderTemplate>
<FooterTemplate>
<hr color="red">
</FooterTemplate>
<ItemTemplate>
<asp:Button id="edit" runat="server" Text="编辑" CommandName="edit"></asp:Button>
<%#DataBinder.Eval(Container.DataItem,"LastName")%>
<%#DataBinder.Eval(Container.DataItem,"FirstName")%>
</ItemTemplate>
<EditItemTemplate>
<asp:Label Runat="server" ID="lastname">
<%#DataBinder.Eval(Container.DataItem,"LastName")%>
</asp:Label>
<asp:Label Runat="server" ID="FirstName">
<%#DataBinder.Eval(Container.DataItem,"FirstName")%>
</asp:Label>
<asp:TextBox Runat=server ID="Title" Text='<%#DataBinder.Eval(Container.DataItem,"Title")%>'/>
<asp:TextBox Runat=server ID="titleOfCourtesy" Text='<%#DataBinder.Eval(Container.DataItem,"TitleOfCourtesy")%>'/>
<asp:Button id="update" runat="server" Text="更新" CommandName="update" />
<asp:Button id="cancel" runat="server" Text="取消" CommandName="cancel" />
</EditItemTemplate>
</asp:DataList>
后台代码:
private void dlEditItem_CancelCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
//设置DataList控件的编辑项的索引为-1,既取消编辑
dlEditItem.EditItemIndex=-1;
//数据绑定
DataListDataBind();
}
private void dlEditItem_EditCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
//设置DataList控件的编辑项的索引为当前项
dlEditItem.EditItemIndex=e.Item.ItemIndex;
//数据绑定
DataListDataBind();
}
private void dlEditItem_UpdateCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
//取得编辑行的关键字段的值
int empID=(int)dlEditItem.DataKeys[e.Item.ItemIndex];
//取得文本框中输入的内容
TextBox newTitle=(TextBox)e.Item.FindControl("Title");
TextBox newTitleOfCour=(TextBox)e.Item.FindControl("TitleOfCourtesy");
string sqlCom="update Employees set Title='"+newTitle.Text+"',TitleOfCourtesy='"+newTitleOfCour.Text+"' where EmployeeID="+empID.ToString();
//定义数据连接对象,其中数据库连接字符串是在Web.Config文件中定义的
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["DataBaseCon"].ToString());
//定义命令对象
SqlCommand cmd=new SqlCommand(sqlCom,conn);
//打开数据连接
conn.Open();
try
{
//执行SQL命令
cmd.ExecuteNonQuery();
//取消编辑
dlEditItem.EditItemIndex=-1;
DataListDataBind();
}
catch(Exception err)
{
//输入异常信息
Response.Write(err.ToString());
}
finally
{
//关闭连接对象
conn.Close();
}
}
private void DataListDataBind()
{
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["DataBaseCon"].ToString());
SqlDataAdapter da=new SqlDataAdapter("select * from Employees",conn);
DataSet ds=new DataSet();
try
{
da.Fill(ds,"testTable");
dlEditItem.DataSource=ds.Tables["testTable"];
dlEditItem.DataBind();
}
catch(Exception error)
{
Response.Write(error.ToString());
}
}
posted @
2007-11-16 10:16 潘奕涛 阅读(149) |
评论 (0) |
编辑
ctrl+pagedown ctrl+pageup Shift+F7
三个都可以~~~
posted @
2007-11-05 20:49 潘奕涛 阅读(92) |
评论 (0) |
编辑
摘要: 一般事件 事件 浏览器支持 描述 onClick HTML: 2|3|3.2|4 Browser: IE3|N2|O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDblClick HTML: 2|3|3.2|4 Browser:IE4|N4|O 鼠标双击事件 onMouseDown HTML: 2|3|3.2|4 Browser:IE4|N4|O 鼠标上的按钮被按下了 onMouse...
阅读全文
posted @
2007-11-05 20:45 潘奕涛 阅读(170) |
评论 (0) |
编辑
document.all.LABELID.click()
posted @
2007-11-05 12:48 潘奕涛 阅读(42) |
评论 (0) |
编辑
摘要:
阅读全文
posted @
2007-11-05 12:42 潘奕涛 阅读(185) |
评论 (0) |
编辑
摘要:
阅读全文
posted @
2007-11-04 21:35 潘奕涛 阅读(295) |
评论 (0) |
编辑
摘要:
阅读全文
posted @
2007-11-04 20:51 潘奕涛 阅读(116) |
评论 (0) |
编辑
摘要:
阅读全文
posted @
2007-11-04 15:05 潘奕涛 阅读(201) |
评论 (0) |
编辑
摘要:
阅读全文
posted @
2007-11-04 10:10 潘奕涛 阅读(978) |
评论 (1) |
编辑
摘要:
阅读全文
posted @
2007-11-04 10:10 潘奕涛 阅读(622) |
评论 (1) |
编辑
摘要:
阅读全文
posted @
2007-11-04 10:09 潘奕涛 阅读(2716) |
评论 (0) |
编辑
摘要:
阅读全文
posted @
2007-11-04 09:20 潘奕涛 阅读(84) |
评论 (0) |
编辑
摘要:
阅读全文
posted @
2007-11-04 00:19 潘奕涛 阅读(73) |
评论 (0) |
编辑
摘要:
阅读全文
posted @
2007-11-03 11:39 潘奕涛 阅读(391) |
评论 (0) |
编辑
摘要: 1。解决2000问题function y2k(number) { return (number < 1000) ? number + 1900 : number; }2。检查日期是否合法// 当输入参数为isDate(dd,mm,ccyy)时,表示要检查年,月,日// 当输入参数为isDate(dd,mm) 表示默认年为当前年// 当输入参数为isDate(dd)表示默认年,月为当前年月//...
阅读全文
posted @
2007-11-03 11:32 潘奕涛 阅读(64) |
评论 (0) |
编辑
在客户端的javascript脚本里,想操作服务器控件时,先要得到控件的引用。一般先获得服务器控件的在web页中的ID,通过调用documnet 对象的方法,就可以获得服务器控件的引用。
如:在网页定义了一个服务器控件
<asp:DropDownList id="EquipmentList" runat="server" Width="96px"></asp:DropDownList>
然后在脚本中可通过语句 var list=document.getElementById("EquipmentList"); 获得了控件的引用,然后就可以操作控件了,如:list.options.length=3; 也可以使用 document.all["EquipmentList"].options.length=3; 一句实现。刚刚学web开发,一直这么用没啥问题。
遇到问题: 定义了一个用户控件,用户控件里面包含包含若干服务器控件,在用户控件中写脚本控制服务器控件。仍然按照 上面的方法做,出错。提示是:document.getElementById("EquipmentList") 为空或不是对象,说明没有找到EquitmentList 控件,没有获得引用。经求教得知,用户控件放在网页上时,其内部的服务器控件的ID会改变,不是在用户控件中定义的那个ID了。 要获得这个ID 要用如下语句:<%=服务器控件名.ClientID%> ,修改用户控件中脚本代码,用:<%=服务器控件名.ClientID%> 替换原来的ID,如:
var list=document.getElementById("EquipmentList"); 换为 var list=document.getElementById("<%=EquipmentList.ClientID%>"); 这样代码运行成功。
posted @
2007-11-03 11:28 潘奕涛 阅读(111) |
评论 (0) |
编辑
| 字母和数字键的键码值(keyCode) |
| 按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
|
A
|
65 |
J |
74 |
S |
83 |
1 |
49 |
| B |
66 |
K |
75 |
T |
84 |
2 |
50 |
| C |
67 |
L |
76 |
U |
85 |
3 |
51 |
| D |
68 |
M |
77 |
V |
86 |
4 |
52 |
| E |
69 |
N |
78 |
W |
87 |
5 |
53 |
| F |
70 |
O |
79 |
X |
88 |
6 |
54 |
| G |
71 |
P |
80 |
Y |
89 |
7 |
55 |
| H |
72 |
Q |
81 |
Z |
90 |
8 |
56 |
| I |
73 |
R |
82 |
0 |
48 |
9 |
57 |
| 数字键盘上的键的键码值(keyCode) |
功能键键码值(keyCode) |
| 按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
|
0
|
96 |
8 |
104 |
F1 |
112 |
F7 |
118 |
| 1 |
97 |
9 |
105 |
F2 |
113 |
F8 |
119 |
| 2 |
98 |
* |
106 |
F3 |
114 |
F9 |
120 |
| 3 |
99 |
+ |
107 |
F4 |
115 |
F10 |
121 |
| 4 |
100 |
Enter |
108 |
F5 |
116 |
F11 |
122 |
| 5 |
101 |
- |
109 |
F6 |
117 |
F12 |
123 |
| 6 |
102 |
.
|
110 |
|
|
|
|
| 7 |
103
|
/ |
111 |
|
|
|
|
| 控制键键码值(keyCode) |
| 按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
| BackSpace |
8 |
Esc |
27 |
Right Arrow |
39 |
-_ |
189 |
| Tab |
9 |
Spacebar |
32 |
Down Arrow |
40 |
.> |
190 |
| Clear |
12 |
Page Up |
33 |
Insert |
45 |
/? |
191 |
| Enter |
13 |
Page Down |
34 |
Delete |
46 |
`~ |
192 |
| Shift |
16 |
End |
35 |
Num Lock |
144 |
[{ |
219 |
| Control |
17 |
Home |
36 |
;: |
186 |
\| |
220 |
| Alt |
18 |
Left Arrow |
37 |
=+ |
187 |
]} |
221 |
| Cape Lock |
20 |
Up Arrow |
38 |
,< |
188 |
'" |
222 |
|
posted @
2007-11-03 11:03 潘奕涛 阅读(2845) |
评论 (6) |
编辑
<script language=javascript>
function onlyNum()
{
//第一个if定义除数字外可响应的键,如46对应Delete键,若要响应Tab键,可在后面加上&&!(event.keyCode==9),若要允许输入小数点,则可加上&&!(event.keyCode==190),其它类似
if(!(event.keyCode==46)&&!(event.keyCode==8)&&!(event.keyCode==37)&&!(event.keyCode==39))
//第二个if定义要响应的数字键,||前面的是响应左边键盘对应的数字,后面是响应小键盘上的数字
if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
event.returnValue=false;
}
</script>
<input onkeydown="onlyNum();">
posted @
2007-11-03 11:01 潘奕涛 阅读(253) |
评论 (0) |
编辑
摘要: 假设有“读者表”,表中有一个“借书证状态”字段,此字段应该设置成“正常、挂失、销户”这三个状态的一个,如下表:读者表(表一): ReaderID ReaderStatus 1 正常 2 正常 3 挂失 4 正常 5 销户 问题是这样记录多了会有数据冗余,那么,是否应把“借书证状态”单独立一个表,而在...
阅读全文
posted @
2007-10-14 19:30 潘奕涛 阅读(268) |
评论 (1) |
编辑
摘要: 声明:网上转载的,文章很长,但写得很好!
阅读全文
posted @
2007-01-12 16:43 潘奕涛 阅读(347) |
评论 (10) |
编辑
摘要: 2007.01.08 来自:新华网
RSS 是一种信息发布方式,更新博客和播客时都用得到。Web2.0还会造成另一