日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

几个 ASP.NET 小技巧

發布時間:2024/6/5 asp.net 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 几个 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 的一堆代碼了。







轉載于:https://www.cnblogs.com/RChen/archive/2008/09/23/1296721.html

總結

以上是生活随笔為你收集整理的几个 ASP.NET 小技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。