GridView 按鈕

//GridView中添加按鈕後,如何觸發按鈕的各種事件?

1.在GridView的“編輯列”屬性窗口中,增加新的Botton列。

2.然後再該窗口右邊屬性中,將外觀項下的ButtonType設置一下,設置項有:如:Link、Button、Image。

3.屬性設置完成後,在右邊屬性列表窗口的下方有這樣一行超鏈接藍字:將此字段轉換爲TemplateField,單擊這個超鏈接,把該列插入進來的字段轉換爲模版。

//添加了一個刪除控件,並將其轉換爲模版後的代碼,該控件還和在GridView所在行的主鍵進行綁定,把主鍵作爲參數帶到該控件的各個事件函數中。

<asp:TemplateField ShowHeader="False" HeaderText="刪除">

             <ItemTemplate>

                    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandArgument='<%# Eval("ClientID") %>'

                            OnClick="LinkButton1_Click" Text="刪除"></asp:LinkButton>

                </ItemTemplate>

       </asp:TemplateField>

 

//這是一個沒有綁定字段值的新增Button列,將其裝換爲模版後的代碼如下:

<asp:TemplateField>

             <ItemTemplate>

                 <asp:Button ID="Button2" runat="server" CausesValidation="false" CommandName="" Text="按鈕" OnClick="Button2_Click" />

             </ItemTemplate>

     </asp:TemplateField>

4.  然後即可在編輯模版狀態下,編輯、設置這個控件的各種事件了,比如雙擊這個控件按鈕,系統則會自動在.cs文件中添加該控件的OnClick事件觸發的函數。

注意:如果你的GridView中加入了多個轉換爲模版的列,進入編輯模版狀態後,要選擇相應的轉換爲模版的列,才能進行編輯。如下圖:


另:在cs文件中調用Gridview中按鈕綁定的值:

 1protected void LinkButton2_Click(object sender, EventArgs e)
 2    {
 3        SqlConnection myconn;
 4        SqlCommand mycommand;
 5        myconn = new SqlConnection(ConfigurationManager.ConnectionStrings["BaseConnectionString"].ConnectionString);
 6        string sql = "update Bbs_Message set ISTOP=1 where Bbs_MessageIS=" + ((LinkButton)sender).CommandArgument.ToString();
 7        //Response.Write(sql);
 8        myconn.Open();
 9        mycommand = new SqlCommand(sql, myconn);
10        mycommand.ExecuteNonQuery();
11        myconn.Close();
12
13        Response.Redirect("SQS_ADD3.aspx?XkzSqsID=" + Request.QueryString["XkzSqsID"].ToString());
14    }

HyperLink的操作前段時間已經研究的頗有心得了,但是ButtonField卻一直沒有解決,這個問題困擾了我多日,中間因爲考試中段了一段時間,現在重新找出來發現問題還是沒有解決,在查找了一些資料之後終於搞定了,其實挺簡單的,這裏面用到了一個小技巧,那就是使用TemplateField。

------------------愛國分界線----------------------

    HyperLink的應用只要是頁面轉向,中間要設置一些諸如ID啊、NAME啊之類的屬性,用起來非常方便,其主要屬性設置爲:

<asp:HyperLinkField DataNavigateUrlFields="UserId,UserName" DataNavigateUrlFormatString="userdetail.aspx?UserId={0} & UserName={1}" DataTextField="UserName" HeaderText="用戶詳細信息" Target="_blank" />

看上去是不是非常強悍?用起來更強悍!

    ButtonField的屬性主要的就一個CommandName,看起來很羸弱,用起來也是如此。看看它的典型應用的屬性設置吧:

<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程序設計高手在網上貼了很多怎麼轉換和使用模板列,我這裏就直接拿過來了:

1、點擊GridView的快捷箭頭,選‘編輯列’。
2、加入一個ButtonFiled,在右邊的屬性框裏設置HeadText(用以顯示),定義一個CommandName(用以你點擊以後觸發的動作)
3、點右下角的‘轉化爲模版列’,ok。
4、右擊GridView,‘編輯模版’--‘Column[..]--你之前定義的HeadText’,ItemTemplate裏看見你的按鈕了嗎?點中,屬性裏有一項‘OnClientClick’,把“javascript:return confirm('真的要刪除嗎?');”粘貼進去。
5、搞定你需要的功能了。
6、如果你想點擊按鈕觸發其他事件,可以在RowCommand事件裏詳細寫。。。
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "MyBtnClicked")//前面你定義的CommandName
    {
        Response.Write("kkk clicked");
    }
}

如果你使用了微軟的數據源空間SqlDataSource,那麼你還可以直接設置Button將要操作的數據列,而不用再去寫代碼,如下設置:

1、在前面的步驟4中,你在itemTemplate裏看見你的按鈕右上角的小箭頭了吧,verygood,點擊‘編輯DataBings’。。。
2、看見這一級別的綁定了嗎?把 CommandArgument和你想操作的字段綁定吧。。。(右邊下拉列表選擇)
3、ok,現在你可以類似下面方法調用
------------------
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "MyBtnClicked")
    {
        Response.Write("you wanted " + e.CommandArgument.ToString());
    }
}
------------------
你無非就是想取到結果集中的cell裏的內容,現在你想得到的內容綁定在CommandArgument裏了,你就不用再什麼index什麼cell[].text了(複雜的cell你還要findcontrol,呵呵)

OK,這就是模板列最有意思的應用了,當然了,應該還有更加強大的應用,但是迄今爲止我用到的也就這麼一些了,也只能介紹這麼多了。我最喜歡的還是很方便的就可以在裏面添加JavaScript代碼,很強大。

http://www.cnblogs.com/zrlhappy/articles/349852.html

http://blog.sina.com.cn/s/blog_4696f46b010097rq.html

http://www.cnblogs.com/lbsx/archive/2010/10/06/1844661.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章