知足常乐,享受生活

最新评论

re: SourceGrid - Open Source C# Grid Control 無名111 2008-04-07 10:15  
真你媽的噁心!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
re: VBA 人.江湖 2008-03-26 04:48  
好东西啊,我最近制表搞得头都大了
re: GPRS 编程通信 genet 2008-03-12 19:53  
移动短信的代理和接入地址都改了吧``发不了的
re: VBA 漂亮女巫 2008-03-05 12:18  
找到了想知道的东东,感谢!
re: GPRS 编程通信 潇潇111 2008-01-12 13:58  
看不懂啊`~~
re: Architect Inside I - 五年后的软件界 david liu 2007-12-27 07:19  
大磊还是这么思想锐利文峰牟利啊。。佩服
re: DXF 读取 ay 2007-12-03 07:14  
请问兄台是否知道哪里有 “DXF参考手册” 的中文书籍呀,小弟有本日文版的,看不懂,想求个中文版的,先谢过了!
re: GPRS 编程通信 arenxl 2007-11-20 07:14  
好东西啊,但是我发过去,手机打不开收到的文件,博主可以指教一下吗 ?
re: DNN的学习经历 风清洋 2007-09-21 18:01  
大虾,看了你的文章觉得你好强,有一个问题请你帮忙,我在用EXCEL共享工作簿的时候,之前隐藏的列有的用户打开共享文件时却展开了(不隐藏了),而有的是正常的。请问是怎么回事?后来怀疑是EXCEL版本问题,让他重装了office问题依然存在,于是又重装了系统,然后装office,好了,上午用是正常的,可到下午不知什么原因又不行了。请大虾一定帮帮忙,非常感谢。我的qq:337580558。
re: ASP .Net 经验 PPBoy 2007-08-03 13:48  
后面的那段挺有用的~
希望LZ能多写点经验哦~呵呵
re: ASP .Net C# �� Word�������� ���Ů�� 2007-07-23 13:00  
Ϊʲô��������ʱ���dz���Word.PageNumbers��������"item"�Ķ���
re: 自定义异常处理[未登录] 无名 2007-07-19 13:50  
谢谢。
re: 串口通信 短信 GPRS[未登录] 红枫叶 2007-07-07 07:58  
请问你用过Q2406B吗,想请教你点问题可以吗
re: 流媒体 RTP[未登录] peter 2007-05-27 09:19  
代码清单3在哪呢?
re: 基于GPRS网络的GPS图形导航仪 GPS车辆导航监控系统管理解决方案 2007-04-25 18:36  
GPRS(General Packet Radio Service,通用无线分组业务),是一种基于GSM系统的无线分组交换技术,提供端到端的、广域的无线IP连接。通俗地讲,GPRS是一项高速数据处理的技术,方法是以“分组”的形式传送资料到用户手上。虽然GPRS是现有GSM网络向第三代移动通信演变的过渡技术,但是它在许多方面都具有显著的优势。GPRS是欧洲电信协会GSM系统中有关分组数据的标准。它采用信道捆绑(目前GPRS 的设计可以在一个载频或8 个信道中实现捆绑) 和增强数据速率的方法实现高速接入,理论上可提供高达115 kbps的空中接口传输速率,使若干移动用户能够同时共享一个无线信道,一个移动用户也可以使用多个无线信道。实际发送或接收数据包的用户仅占很少一部分网络资源,并且网络容量只有在实际传输时才被占用。GPRS与现有的GSM语音系统最根本的区别是: GSM是一种电路交换系统,而GPRS是一种分组交换系统。因此,GPRS特别适用于间断的、突发的或频繁的、少量的数据传输,也适用于偶尔的大数据量传输。这一特点正适合大多数移动互联和设备对传输数据的要求。
re: TabPane 选项卡 模拟[未登录] sunny 2007-04-04 06:53  
多谢 !!!
re: WINLOGON.EXE 木马病毒 XUE 2006-08-08 09:20  
非常感谢你的详细描述!!!!!!!!!!!
@BAsil
我用的是VS2005 ASP .net 2.0。 不知道为什么不可以执行。是不是因为你用的vs2003。我测试了很多遍。
你写一个datagrid测试databind。看看是否可以刷新。
谢谢
我试过,可以执行阿,不明白你的意思。
<Script>
function showItem()
{
window.showModalDialog('A2.aspx',null,'dialogWidth:600px;dialogHeight:500px;dialogLeft:300px;dialogTop:400px;resizable:yes;status:no');

__doPostBack('Refresh','')
return true;

}
</Script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:LinkButton id="Refresh" runat="server">Refresh</asp:LinkButton>
<input type="button" onclick="showItem();" value="btn">
</form>
</body>

protected System.Web.UI.WebControls.LinkButton Refresh;

private void Page_Load(object sender, System.EventArgs e)
{

}

override protected void OnInit(EventArgs e)
{

InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Refresh.Click += new System.EventHandler(this.Refresh_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
private void Refresh_Click(object sender, System.EventArgs e)
{
Response.Write("wang");

}
re: Enterprise Library 实现步骤 OnlyLiu 2006-07-13 07:27  
http://terrylee.cnblogs.com/category/36514.html

我已经看了,说明太简单了。
re: Enterprise Library 实现步骤 TerryLee 2006-07-13 04:27  
楼主一定是没有好好找:-)

Enterprise Library 1.1 & 2.0
http://terrylee.cnblogs.com/category/36514.html
<script language="javascript">
function show(){
var sRet = window.showModalDialog('a.html','title','scrollbars=no;resizable=no;help=no;status=no;dialogTop=25; dialogLeft=0;dialogHeight=350px;dialogwidth=410px;');
if(sRet == "refresh")
{
window.location.reload();
}

}
</script>
<input name="" type="button" onClick="show();" value="打开" />

<script language="javascript">
function al(){
alert("关闭了哦");
window.returnValue = "refresh";
window.close();
}
</script>
<input name="" type="button" onClick="al();" value="关闭" />

忘记袄个咖喱哦 哀怜感按时上爱啊
我最喜欢的陶瓷!我的至爱
我在.aspx程序中触发了一个数组越界的错误,然后在global.asax.vb中Application_Error事件中添加了上面所说的代码,但错误发生时在MyLog中添加事件,为什么?
re: ASP.NET中弹出窗口技术 OnlyLiu 2005-11-02 16:37  
不是我的需要,我需要如何弹出例子
ASP.Net Javascript如何关联 OnlyLiu 2005-11-02 16:26  
戴泽峰

概要

本文结合示例讲述了在ASP.net应用程序中如何利用客户端的Javascript脚本提高程序的执行效率并实现更多的功能。

一、ASP.Net与Javascript

.Net是微软公司下一代的战略核心,ASP.Net是.Net战略在Web开发方面的具体实现。它继承了ASP的简单性和易用性,同时克服了ASP程序结构化较差,难于阅读和理解的缺点。特别是服务器端控件和事件驱动模式的引入,使得Web应用程序的开发更接近于过去桌面程序的开发。

在各种各样介绍ASP.Net的文章和书籍中,都把重点放在了服务器控件和.Net Framework SDK上,因为这是ASP.Net中最新和最具革命性的改进;与此相反,在过去的Web开发中占据重要地位的客户端脚本Javascript(也包括VBScript)则鲜有提及,似乎有了服务器端程序,已经不需要客户端脚本了。但是,服务器端的程序毕竟需要一次浏览器与Web服务器的交互,对于ASP.Net来说,就是一次页面的提交,需要来回传送大量的数据,而很多工作,比如输入验证或者删除确认等,完全可以用Javascript来实现。因此,探讨在ASP.Net中如何使用Javascript仍然很有必要。


二、Javascript的应用示例

1.为页面上的某个服务器控件添加Javascript事件

服务器控件最终生成的仍然是普通的HTML,比如<asp:textbox>生成input text。表单中的每个HTML控件都有它自己的Javascript事件,比如Textbox有onchange事件,Button有onclick事件,Listbox有onchange事件等。要想为服务器控件添加客户端的事件,需要用到Attributes属性。Attributes属性是所有的服务器控件都有的一个属性,它用来为最终生成的HTML添加自定义的一些标记。假设Web Form上有一个保存按钮btnSave,希望在用户点此按钮时提示用户是否确实要保存(比如一旦保存就无法恢复等),则应在Page_Load事件中添加如下代码:

if not page.isPostBack() then

btnSave.Attributes.Add(“onclick”,”Javascript:return confirm(‘Are you sure to save?’);”)

end if

要注意的是‘return’,这是不可省的,否则即使用户点了取消,数据仍然会保存。


2.为Datagrid中的每一行添加Javascript事件

假设Datagrid的每一行有一个删除按钮,希望在用户点此按钮时提示用户是否确实要删除此条记录,以防用户点错了行,或仅仅是无意中点了删除按钮。

无论这个删除按钮是什么名字,都不能象上个例子那样直接引用,因为每一行都有这样一个按钮,它们是Datagrid中的子控件。在这种情况下,需要用到Datagrid的OnItemDataBound事件。OnItemDataBound事件发生在Datagrid的每一行数据绑定到Datagrid之后(即一行激发一次)。首先在Datagrid的声明中添加如下代码:

<asp:datagrid id="grd1" runat="server" OnItemDataBound = "ItemDataBound" >

…Columns definition here

</asp:datagrid> 此处说明OnItemDataBound事件发生时调用ItemDataBound方法,在代码后置文件中添加此方法的定义:


Sub ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)

If e.Item.ItemType <> ListItemType.Header And e.Item.ItemType <> ListItemType.Footer Then

Dim oDeleteButton As LinkButton = e.Item.Cells(5).Controls(0)

oDeleteButton.Attributes("onclick") = "javascript:return Confirm ('Are you sure you want to delete" & DataBinder.Eval(e.Item.DataItem, "m_sName") & "?')"

End If

End Sub

由于Datagrid的标题行和脚注行也会激发此事件,所以首先判断激发此事件的行不是标题行和脚注行。这里假设Delete按钮位于Datagrid的第6列(第一列是0),且Datagrid的Datasource中包含名为”m_sName”的列


3.引用编辑状态下的Datagrid中的控件

Datagrid的内置编辑功能使得当记录的字段较少时的一种编辑方法。用户不必进入一个单独的页面编辑记录,而是直接点编辑按钮就可以使当前行进入编辑模式。而另一方面,有一些Javascript程序需要引用控件的名称。比如,很多程序在需要用户输入日期时都提供一个日期控件以保证日期格式的合法性,当用户点控件图标时弹出一个新窗口供用户选择日期。此时需要把显示日期的文本框的ID提供给新窗口,以便当用户选择日期后值可以回填到文本框中。

如果是普通的服务器文本框控件,它的ID与生成的HTML输入框的ID是相同的;但是在Datagrid的编辑状态下,两个ID并不相同(其道理与上例相同),这就需要用到控件的ClientID属性。

Protected Sub ItemEdit(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)

Dim sDateCtrl as string

sDateCtrl = grd1. Items (e.Item.ItemIndex) . Cells(2). FindControl("txtDate") . ClientID

End Sub

这里假设ItemEdit方法是Dategrid的OnItemEdit事件处理程序,同时在Datagrid的第三列包含一个名为txtDate的服务器文本框控件。


4.引用ASP.Net自动生成的Javascript程序

所谓的“服务器端控件”是针对开发人员的,在生成的HTML源程序中并没有服务器和客户端之分,都是标准的HTML,DHTML和Javascript。它之所以能响应用户的输入是因为每个控件的事件处理程序最终都生成了一段脚本,此脚本重新提交页面使得Web Server有机会再次响应并作出处理。通常情况下我们不必知道此脚本是什么也不必直接调用此脚本,但在有些情况下,适当地调用此脚本可以简化许多工作。请看下面两个例子。

● 点Datagrid的任一位置以选中一行

Datagrid提供了一种内置的选择按钮,当点此按钮时选中当前行(可以设置SelectedItemStyle属性以使当前行有不同的外观)。但用户可能更习惯于点任意一个位置都能选中一行,如果完全自己实现这个功能相当烦琐。一个好的思路是添加一个选择按钮,但使此列隐藏,当点任一行时调用此按钮产生的Javascript脚本。

Sub Item_Bound(ByVal sender As Object, ByVal e As DataGridItemEventArgs )

Dim itemType As ListItemType

itemType = CType(e.Item.ItemType, ListItemType)

If (itemType <> ListItemType.Header) And _

(itemType <> ListItemType.Footer) And _

(itemType <> ListItemType.Separator) Then

Dim oSelect As LinkButton = CType(e.Item.Cells(5).Controls(0), LinkButton)

e.Item.Attributes("onclick") = Page. GetPostBackClientHyperlink (oSelect, "")


End Sub

这里假设选择按钮位于第6列。e.Item代表了一行,从生成的HTML上看就是在每个<tr>里增加了一个onclick事件。Page.GetPostBackClientHyperLink方法返回页面中LinkButton控件产生的客户端脚本,其中第一个参数是Linkbutton控件,第二个参数是传递给此控件的参数,通常为空。如果不是LinkButton控件,有一个类似的函数GetPostBackClientEvent,读者可以参考MSDN。

● 服务器产生的脚本与手工添加的脚本冲突

服务器控件的服务器事件一般对应到客户端控件的相应事件,如Dropdownlist的SelectedIndexChanged事件对应HTML <Select>的onchange事件。如果你要手工增加一个onchange事件,则会在客户端产生两个onchange,浏览器就会忽略掉一个。比如用户希望每当改变了Dropdownlist中的选项就保存到数据库(虽然不是很常见,但确实有这种需要),但同时还希望提醒用户是否确实要做保存。显然,保存的代码应该放在SelectedIndexChanged事件中,而提醒的工作应该手工加一段onchange事件。结果就是两个onchange只能执行一个。正确的方法应该是添加一个不可见的保存按钮,在手工增加的onchange事件中调用此按钮生成的程序。

Page_Load方法如下:

Dim sCmd as string

sCmd=Page.GetPostBackClientHyperlink(btnUpdate, "")

If not page.isPostback then

Dropdownlist1.Attributes.add("onchange","ConfirmUpdate(""" & sCmd & """)")

End if


ConfirmUpdate函数如下

<Script language=”javascript”>

function ConfirmUpdate(cmd){

if confirm(“Are you sure to update?”)

eval(cmd);

}

</Script>

这里利用了Javascript eval函数来调用一个字符串中包含的命令。需注意的是包含命令的字符串不能用单引号括起来,因为自动生成的脚本中包括单引号,所以这里用两个双引号表示字符串本身的双引号。

三、结束语

以上简单讨论了在ASP.Net中插入Javascript的几种情况。合理地在服务器程序中插入客户端的Javascript脚本,可以提高程序的运行效率并提供更友好的用户界面。

转自:动态网制作指南 www.knowsky.com