几个 ASP.NET 小技巧_实用技巧

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 %>', '');
}
// 刷新帖子列表
function refreshPosts() {
__doPostBack('<%= linkUpdatePosts.ClientID %>'.split('_').join('$'), '');
}这里注意 split('_').join('$') 的用法,是因为作为 __doPostBack 参数的控件标志符是用 $ 分隔的,而 ClientID 是用 _ 分隔,要在两者之间进行下转换。

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 的一堆代码了。

时间: 2024-09-17 01:58:50

几个 ASP.NET 小技巧_实用技巧的相关文章

ASP.NET常用小技巧_实用技巧

今天为大家介绍6个ASP.NET常用技巧,使用操作简单,具有很高的实用性,记得收藏哦 1.跟踪页面执行  设置断点是页面调试过程中的常用手段,除此之外,还可以通过查看页面的跟踪信息进行错误排查以及性能优化.ASP.NET中启用页面跟踪非常方便,只需在Page指令中加入Trace="True"属性即可:设置断点是页面调试过程中的常用手段,除此之外,还可以通过查看页面的跟踪信息进行错误排查以及性能优化.ASP.NET中启用页面跟踪非常方便,只需在Page指令中加入Trace="T

.net制作的抽餐厅和游戏装备的小程序_实用技巧

随便新建一个asp.net web项目,拖入即可.现在知道为什么游戏老是暴不出好装备,因为他的权重是非常小地...中午吃饭随机一下,想去哪一家,就把权重值设大一点,再中不了,就认命吧! Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DO

.NET中函数Main的使用技巧_实用技巧

引言 最近在使用pandoc这个文档转换软件,能够对各种文档进行完美的转换,比如从markdown文件转为doc,ppt,tex,odt等等各种,感兴趣的可以从Pandoc下载,对于pandoc的的文档转换,都是使用cmd中的命令来进行操作的.现在我需要把d盘的1123.md文件转换为docx文档,我只需要在cmd中输入下面的命令即可实现. 当然在安装pandoc的时候就已经把pandoc添加到环境变量中了,现在我们来分析一下这个命令pandoc 1123.md -o 1123.doc,将这个命

asp.net 结合YUI 3.0小示例_实用技巧

注:由于本人主要做后台的就只用到了IO空间下面的一些东西,贴个小小的级联效果来吧, 废话少说先拿代码说话了, 复制代码 代码如下: Demo.show={ Test:function(e,Y) { config=Demo.config; function onshengchange(e) { var sheng = Y.Node.get('#'+config.sheng).get("value"); var speccode = Y.Node.get('#'+config.specia

ASP.NET实现License Key输入功能的小例子_实用技巧

  这个演示,在输入时,是不需要与服务端交互,只有全部输入完毕之后,用户点铵钮才进行验证.因此在这里,写Javascript来实现即可. js: 复制代码 代码如下: <script type="text/javascript">        function JumpToNextTextBox(currentTxtBox, nextTextBoxID) {            if (currentTxtBox.value.length >= 5) {     

Asp.Net上传图片验证代码的小例子_实用技巧

一.客户端方式验证 复制代码 代码如下: <script language="javascript">img=new Image() ;function Check_FileTypeAndFileSize(){    //获得上传路径    var str=document.all.uploadFile.value;    //验证上传路径不为空    if(str=="")    {          alert("请先选择要上传的图片!&q

ASP.NET MVC处理文件上传的小例子_实用技巧

复制代码 代码如下: <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>Files uploaded to server</h2> <div id="dialog" title="Upload files"> <% using (Html.B

asp.net 编辑gridview的小例子_实用技巧

编辑gridview例子,完整代码如下. 复制代码 代码如下: protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)     {         GridView1.EditIndex = e.NewEditIndex;         BingGrid();     }     protected void GridView1_RowCancelingEdit(object sender, Gri

Asp.net中获取应用程序完整Url路径的小例子_实用技巧

复制代码 代码如下: /// <summary> /// Gets the absolute root /// </summary> public static Uri AbsoluteWebRoot {     get  www.jb51.net    {         var context = HttpContext.Current;         UriBuilder uri = new UriBuilder();         uri.Host = context.