ASP.NET 小技巧(2个)

 更新时间:2009年06月05日 00:44:18   作者:  
ASP.NET 的2个小技巧
1. ASP.NET AJAX 中,如何用 JavaScript 调用服务器端的方法?
这里不是指调用简单的 PageMethod,因为静态方法是不能操作当前页面的控件的,所以静态的 PageMethod 作用就跟普通的 WebService 一样,比较局限。
那么,调用一般的服务器端方法,其实就是发起一个异步回调。最简单的实现办法,是通过 UpdatePanel 来做。
首先定义一个隐藏的 LinkButton,在其处理事件中,去调用我们要执行的操作:
复制代码 代码如下:

<asp:LinkButton ID="linkUpdatePosts" runat="server" style="display:'none';" OnClick="linkUpdatePosts_Clicked"/>
// 刷新帖子列表(供客户端 js 调用)
protected
void linkUpdatePosts_Clicked(object sender, EventArgs e)
{
LoadPosts();
}
然后 JavaScript 中就可以定义函数来触发这个 LinkButton 的回发:
// 刷新帖子列表
function refreshPosts() {
__doPostBack('<%= linkUpdatePosts.UniqueID %>','');
}

2. 如何获取 GridView 编辑状态下单元格里的值?
还在使用这样的代码吗?
复制代码 代码如下:

var txtName = grid1.Rows[e.RowIndex].Cells[0].FindControl("txtName") as TextBox;
if (txtName !=
null)
{
// 读取值
//
}

其实这些工作(在单元格中查找控件,并尝试获取其中的值)已经被封装了。现在,只要调用 ExtractValuesFromCell 方法即可。
而该方法也被很多种列类型所支持:
DataControlField, BoundField, AutoGeneratedField, CheckBoxField, ImageField, TemplateField, DynamicField 你可以在 GridView 的 RowUpdating, RowDeleting 等事件中使用它。利用该方法,可以将值提取到所需的字典里去,然后再从字典中读取。这些字典包括:e.Keys, e.NewValues, e.OldValues 等。
一小段例子代码:
复制代码 代码如下:

// 更新
protected
void grid1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
var row = grid1.Rows[e.RowIndex];
// 提取 Id 字段的值
grid1.Columns[0].ExtractValuesFromCell(
e.Keys,
row.Cells[0] as DataControlFieldCell,
DataControlRowState.Edit,
true
/* include readonly */);
// 提取 Name 字段的值
grid1.Columns[1].ExtractValuesFromCell(
e.NewValues,
row.Cells[1] as DataControlFieldCell,
DataControlRowState.Edit,
true
/* include readonly */);
var id =
int.Parse(e.Keys["id"].ToString());
var name = (string) e.NewValues["name"];
// 执行相关的数据库更新操作
//
}

这样,在大多数场合我们可以尽可能多的使用 BoundField,并且也能正确读取到其编辑时的值,省下自定义 TemplateField 的一堆代码了。

相关文章

  • Asp.net内置对象之Cookies(简介/属性方法/基本操作及实例)

    Asp.net内置对象之Cookies(简介/属性方法/基本操作及实例)

    本文将围绕cookies了解Cookies对象/Cookie对象的属性和方法/Cookie的基本操作及实例:Cookie的写入和读取/Cookie对象相比Session、Application的优缺点扥等,感兴趣的朋友可以了解下,或许对你学习cookies有所帮助
    2013-02-02
  • asp.net如何在图片上加水印文字具体实现

    asp.net如何在图片上加水印文字具体实现

    这篇文章主要介绍了asp.net如何在图片上加水印文字具体实现,有需要的朋友可以参考一下
    2013-12-12
  • ASP.NET的广告控件AdRotator用法分析

    ASP.NET的广告控件AdRotator用法分析

    这篇文章主要介绍了ASP.NET的广告控件AdRotator用法,较为详细的分析了广告控件AdRotator的功能、使用方法与相关注意事项,需要的朋友可以参考下
    2016-05-05
  • .NET中字符串比较的最佳用法

    .NET中字符串比较的最佳用法

    本文详细讲解了.NET中字符串比较的最佳用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • LINQ to XML的编程基础

    LINQ to XML的编程基础

    本文介绍了LINQ to XML的编程基础,即System.Xml.Linq命名空间中的多个LINQ to XML类,这些类都是LINQ to XML的支持类,它们使得处理xml比使用其他的xml工具容易得多。在本文中,着重介绍的是XElement、XAttribute和XDocument。
    2010-02-02
  • ASP.NET 恢复备份Sqlserver实现代码

    ASP.NET 恢复备份Sqlserver实现代码

    在线恢复和备份SQL Server的代码,需要的朋友可以参考下。
    2010-04-04
  • .NET 下运用策略模式(组合行为和实体的一种模式)

    .NET 下运用策略模式(组合行为和实体的一种模式)

    我简单的理解策略模式就是把行为(方法)单独的抽象出来,并采用组合(Has-a)的方式,来组合行为和实体的一种模式比如,.NET中对数组排序的Sort的方法就是一个策略模式的实现模板
    2012-12-12
  • ExceptionLess的安装、配置、使用教程

    ExceptionLess的安装、配置、使用教程

    Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web API,Web Forms,WPF,Console,ASP.NET MVC 等技术开发的应用程序中,这篇文章给大家介绍ExceptionLess安装使用,感兴趣的朋友一起看看吧
    2022-07-07
  • ASP.NET开发中经常用到10款工具软件介绍

    ASP.NET开发中经常用到10款工具软件介绍

    从事.NET开发也好几年了,工作过程中积累一些软件工具,分享给大家,排名不分先后,希望对大家有所帮助。
    2016-04-04
  • .NET分布式Orleans计时器和提醒功能实现

    .NET分布式Orleans计时器和提醒功能实现

    Timer是一种用于创建定期粒度行为的机制,与标准的.NET System.Threading.Timer类相似,Orleans 的 Timer允许在一段时间后执行特定的操作,或者在特定的时间间隔内重复执行操作,这篇文章主要介绍了.NET分布式Orleans 计时器和提醒,需要的朋友可以参考下
    2024-03-03

最新评论