ASP.NET 小技巧(2個(gè))
更新時(shí)間:2009年06月05日 00:44:18 作者:
ASP.NET 的2個(gè)小技巧
1. ASP.NET AJAX 中,如何用 JavaScript 調(diào)用服務(wù)器端的方法?
這里不是指調(diào)用簡單的 PageMethod,因?yàn)殪o態(tài)方法是不能操作當(dāng)前頁面的控件的,所以靜態(tài)的 PageMethod 作用就跟普通的 WebService 一樣,比較局限。
那么,調(diào)用一般的服務(wù)器端方法,其實(shí)就是發(fā)起一個(gè)異步回調(diào)。最簡單的實(shí)現(xiàn)辦法,是通過 UpdatePanel 來做。
首先定義一個(gè)隱藏的 LinkButton,在其處理事件中,去調(diào)用我們要執(zhí)行的操作:
<asp:LinkButton ID="linkUpdatePosts" runat="server" style="display:'none';" OnClick="linkUpdatePosts_Clicked"/>
// 刷新帖子列表(供客戶端 js 調(diào)用)
protected
void linkUpdatePosts_Clicked(object sender, EventArgs e)
{
LoadPosts();
}
然后 JavaScript 中就可以定義函數(shù)來觸發(fā)這個(gè) LinkButton 的回發(fā):
// 刷新帖子列表
function refreshPosts() {
__doPostBack('<%= linkUpdatePosts.UniqueID %>','');
}
2. 如何獲取 GridView 編輯狀態(tài)下單元格里的值?
還在使用這樣的代碼嗎?
var txtName = grid1.Rows[e.RowIndex].Cells[0].FindControl("txtName") as TextBox;
if (txtName !=
null)
{
// 讀取值
//
}
其實(shí)這些工作(在單元格中查找控件,并嘗試獲取其中的值)已經(jīng)被封裝了。現(xiàn)在,只要調(diào)用 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"];
// 執(zhí)行相關(guān)的數(shù)據(jù)庫更新操作
//
}
這樣,在大多數(shù)場(chǎng)合我們可以盡可能多的使用 BoundField,并且也能正確讀取到其編輯時(shí)的值,省下自定義 TemplateField 的一堆代碼了。
這里不是指調(diào)用簡單的 PageMethod,因?yàn)殪o態(tài)方法是不能操作當(dāng)前頁面的控件的,所以靜態(tài)的 PageMethod 作用就跟普通的 WebService 一樣,比較局限。
那么,調(diào)用一般的服務(wù)器端方法,其實(shí)就是發(fā)起一個(gè)異步回調(diào)。最簡單的實(shí)現(xiàn)辦法,是通過 UpdatePanel 來做。
首先定義一個(gè)隱藏的 LinkButton,在其處理事件中,去調(diào)用我們要執(zhí)行的操作:
復(fù)制代碼 代碼如下:
<asp:LinkButton ID="linkUpdatePosts" runat="server" style="display:'none';" OnClick="linkUpdatePosts_Clicked"/>
// 刷新帖子列表(供客戶端 js 調(diào)用)
protected
void linkUpdatePosts_Clicked(object sender, EventArgs e)
{
LoadPosts();
}
然后 JavaScript 中就可以定義函數(shù)來觸發(fā)這個(gè) LinkButton 的回發(fā):
// 刷新帖子列表
function refreshPosts() {
__doPostBack('<%= linkUpdatePosts.UniqueID %>','');
}
2. 如何獲取 GridView 編輯狀態(tài)下單元格里的值?
還在使用這樣的代碼嗎?
復(fù)制代碼 代碼如下:
var txtName = grid1.Rows[e.RowIndex].Cells[0].FindControl("txtName") as TextBox;
if (txtName !=
null)
{
// 讀取值
//
}
其實(shí)這些工作(在單元格中查找控件,并嘗試獲取其中的值)已經(jīng)被封裝了。現(xiàn)在,只要調(diào)用 ExtractValuesFromCell 方法即可。
而該方法也被很多種列類型所支持:
DataControlField, BoundField, AutoGeneratedField, CheckBoxField, ImageField, TemplateField, DynamicField 你可以在 GridView 的 RowUpdating, RowDeleting 等事件中使用它。利用該方法,可以將值提取到所需的字典里去,然后再從字典中讀取。這些字典包括:e.Keys, e.NewValues, e.OldValues 等。
一小段例子代碼:
復(fù)制代碼 代碼如下:
// 更新
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"];
// 執(zhí)行相關(guān)的數(shù)據(jù)庫更新操作
//
}
這樣,在大多數(shù)場(chǎng)合我們可以盡可能多的使用 BoundField,并且也能正確讀取到其編輯時(shí)的值,省下自定義 TemplateField 的一堆代碼了。
您可能感興趣的文章:
- ASP.NET技巧:教你制做Web實(shí)時(shí)進(jìn)度條
- ASP.NET技巧:請(qǐng)求網(wǎng)址并解析返回的html
- ASP.NET技巧:數(shù)據(jù)島出到Excel最為簡易的方法
- ASP.NET技巧:做個(gè)DataList可分頁的數(shù)據(jù)源
- 調(diào)試ASP.NET應(yīng)用程序的方法和技巧
- ASP.NET技巧:為Blog打造個(gè)性日歷
- 幾個(gè)ASP.NET技巧
- ASP.NET編程中的十大技巧
- ASP.NET 2.0 URL映射技巧
- asp.net下GDI+的一些常用應(yīng)用(水印,文字,圓角處理)技巧
- ASP.NET User Control使用技巧一則
- ASP.NET 2.0 URL映射技巧
- 幾個(gè) ASP.NET 小技巧
- asp.net 開發(fā)的一些常用技巧
- asp.net項(xiàng)目開發(fā)中用到的小技巧
- ASP.net Textbox的技巧使用
- ASP.NET 后臺(tái)登錄小技巧介紹
- Asp.Net性能優(yōu)化技巧匯總
- ASP.NET常用小技巧
相關(guān)文章
asp.net網(wǎng)站的404錯(cuò)誤頁面的正確設(shè)置方法
asp.net網(wǎng)站的404錯(cuò)誤頁面的正確設(shè)置方法,需要的朋友可以參考下。2010-05-05ASP.NET與MySQL數(shù)據(jù)庫簡明圖示入門教程
ASP.NET與MySQL數(shù)據(jù)庫簡明圖示入門教程...2006-09-09Community Server專題三:HttpModule
Community Server專題三:HttpModule...2007-03-03.NET獲取客戶端的操作系統(tǒng)版本、瀏覽器版本和IP地址
這篇文章主要為大家詳細(xì)介紹了.NET如何獲取客戶端的操作系統(tǒng)版本、瀏覽器版本和IP地址,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11asp.net傳多個(gè)值到其它頁面的具體實(shí)現(xiàn)
在頁面之間的跳轉(zhuǎn),經(jīng)常會(huì)用到傳值,其中可能會(huì)傳遞多個(gè)值,下面為大家介紹下asp.net傳多個(gè)值到其它頁面的方法,需要的朋友可以參考下2014-02-02jQuery+Asp.Net實(shí)現(xiàn)省市二級(jí)聯(lián)動(dòng)功能的方法
這篇文章主要介紹了jQuery+Asp.Net實(shí)現(xiàn)省市二級(jí)聯(lián)動(dòng)功能的方法,涉及asp.net數(shù)據(jù)庫讀取與字符串轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-05-05.NET?Core配置TLS?Cipher(套件)的詳細(xì)過程
本文以.NET?5為例,只不過針對(duì).NET?Core?3或3.1通過工具掃描出的協(xié)議套件結(jié)果略有所差異,但不影響我們對(duì)安全套件的配置,我們使用OpenSSL生成自簽名證書,對(duì).NET?Core配置TLS?Cipher相關(guān)知識(shí)感興趣的朋友一起看看吧2021-12-12