Gridview擷取選定行的辦法

來源:互聯網
上載者:User
 基本上使用.NET平台不會有人沒用過GridView 的,擷取其選定行也成為新手常見的問題,現在結合以前的代碼,總結三種可能的情況.

     注意這裡的三種方法不是互為補充相互替代的,是應用在不同情況下的。

一. 頁面代碼中有如下語句:     

    OnSelectedIndexChanged="GridView2_SelectedIndexChanged"   (事實上在設計檢視下雙擊gridview機會自動產生此語句,並自動在C#也中產生如下)

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)

    {      

        int index = GridView1.SelectedIndex;       //選定行的索引號

        try

        {

            if (index != -1)                     

            {

                TextBox2.Text = this.GridView1.SelectedRow.Cells[1].Text.ToString();           //這裡取道所選行第二列的元素,注意這裡的列需要為BoundField列,不能是                                                                                                                TemplateField,如果是後者,要用到FindControl,第二種方法中有樣本

            }

    這種方法下,GRIDVIEW中一般會有個選擇按鈕(也可以是編輯、刪除、或者其他TemplateField中的button),總之要按鈕驅動選定行的改變

 二.有時GRIDVIEW中可能不用選擇按鈕,而是把其中某個欄位作為按鈕(事實上依然是BUTTON,只不過把button的text值綁定到欄位),通常這裡的欄位可以是資料庫中的索引鍵,也可以是名稱等。注意這裡一定是TemplateField 列。

 比如下面的頁面代碼,就是把編號欄位(id)綁定到按鈕上。我們的目的是點擊此按鈕時擷取該(id)的值 。
 

        <asp:LinkButton ID="LinkButton1" OnCommand="LinkButton1_Clicked" runat="server" Text='<%# Bind("id") %>' ></asp:LinkButton>

c#也代碼如下:

public void LinkButton1_Clicked(Object sender, CommandEventArgs e)

    {

        int index = int.Parse(e.CommandArgument.ToString());

        string id = ((LinkButton)GridView1.Rows[index].Cells[0].FindControl("LinkButton1")).Text;

三.更為通用的情況,只要gridview中有按鈕即可,不管按鈕是內建的選擇、編輯,還是TemplateField中自訂的按鈕,只需要在頁面代碼的GRIDVIEW代碼中加入如下語句:

        OnRowCommand="GridView2_RowCommand"

然後頁面代碼中:

   protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)

    {

         Control c = ((Control)e.CommandSource);    

         GridViewRow gvr = (GridViewRow)c.Parent.Parent;   //這裡的gvr就是選定的行了,下面的語句分別適用BoundField和TemplateField

         string s = gvr.Cells[0].Text;

//或者

string s = ((Label)gvr.FindControl("Label1")).Text;
 

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.