GridView里面的HyperLink和ButtonField操作总结
??HyperLink的操作前段時間已經(jīng)研究的頗有心得了,但是ButtonField卻一直沒有解決,這個問題困擾了我多日,中間因為考試中段了一段時間,現(xiàn)在重新找出來發(fā)現(xiàn)問題還是沒有解決,在查找了一些資料之后終于搞定了,其實挺簡單的,這里面用到了一個小技巧,那就是使用TemplateField。
????懶得自己寫了,總結一下別人做過的工作吧。
------------------愛國分界線----------------------
????HyperLink的應用只要是頁面轉向,中間要設置一些諸如ID啊、NAME啊之類的屬性,用起來非常方便,其主要屬性設置為:
| <asp:HyperLinkField?DataNavigateUrlFields="UserId,UserName"?DataNavigateUrlFormatString="userdetail.aspx?UserId={0}?&?UserName={1}"?DataTextField="UserName"?HeaderText="用戶詳細信息"?Target="_blank"?/> |
看上去是不是非常強悍?用起來更強悍!
????ButtonField的屬性主要的就一個CommandName,看起來很羸弱,用起來也是如此??纯此牡湫蛻玫膶傩栽O置吧:
| <asp:ButtonField?ButtonType="Button"?CommandName="Click1"?Text="按鈕點擊事件1"?/> <asp:ButtonField?ButtonType="Button"?CommandName="Click2"?Text="按鈕點擊事件2"?/> |
| protected???void??GridView1_OnRowCommand(?object??sender,?GridViewCommandEventArgs?e) { ???????if??(e.CommandName.ToString()?==("Click1")) ???????????Label1.Text?=?"you?Click"?+?e.CommandName.ToString()+1111; ??????else ??????????Label1.Text?=?"you?Click"?+?e.CommandName.ToString()?+?222; } |
這個CommandNam就是為了判斷選取的是哪一列的按鈕。雖然代碼和屬性都很簡單,但是ButtonField應用起來很多地方不方便,比如在AJAX架構中放在UpdatePanel種的時候,使用JavaScript就讓人困擾。于是我們來介紹一下模板列TemplateField。
????????很多ASP.NET 2.0程序設計高手在網(wǎng)上貼了很多怎么轉換和使用模板列,我這里就直接拿過來了:
| 1、點擊GridView的快捷箭頭,選‘編輯列’。 2、加入一個ButtonFiled,在右邊的屬性框里設置HeadText(用以顯示),定義一個CommandName(用以你點擊以后觸發(fā)的動作) 3、點右下角的‘轉化為模版列’,ok。 4、右擊GridView,‘編輯模版’--‘Column[..]--你之前定義的HeadText’,ItemTemplate里看見你的按鈕了嗎?點中,屬性里有一項‘OnClientClick’,把“javascript:return confirm('真的要刪除嗎?');”粘貼進去。 5、搞定你需要的功能了。 6、如果你想點擊按鈕觸發(fā)其他事件,可以在RowCommand事件里詳細寫。。。 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs?e) { ????if (e.CommandName == "MyBtnClicked")//前面你定義的CommandName ????{ ????????Response.Write("kkk clicked"); ????} } |
如果你使用了微軟的數(shù)據(jù)源空間SqlDataSource,那么你還可以直接設置Button將要操作的數(shù)據(jù)列,而不用再去寫代碼,如下設置:
| 1、在前面的步驟4中,你在itemTemplate里看見你的按鈕右上角的小箭頭了吧,verygood,點擊‘編輯DataBings’。。。 2、看見這一級別的綁定了嗎?把 CommandArgument和你想操作的字段綁定吧。。。(右邊下拉列表選擇) 3、ok,現(xiàn)在你可以類似下面方法調用 ------------------ protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs?e) { ????if (e.CommandName == "MyBtnClicked") ????{ ????????Response.Write("you wanted " + e.CommandArgument.ToString()); ????} } ------------------ 你無非就是想取到結果集中的cell里的內容,現(xiàn)在你想得到的內容綁定在CommandArgument里了,你就不用再什么index什么cell[].text了(復雜的cell你還要findcontrol,呵呵) |
OK,這就是模板列最有意思的應用了,當然了,應該還有更加強大的應用,但是迄今為止我用到的也就這么一些了,也只能介紹這么多了。我最喜歡的還是很方便的就可以在里面添加JavaScript代碼,很強大。
?
????今天的總結就這么寫了,以后遇到問題隨時分享。
總結
以上是生活随笔為你收集整理的GridView里面的HyperLink和ButtonField操作总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .Net有关问题。在GridView中添
- 下一篇: gridview的buttonfield