GridView_RowDataBound 常用方法

來源:互聯網
上載者:User

標籤:control   頁面   強型別   業務   角度   eval   src   轉化   總結   

1.這個就不用說,滑鼠經過行顏色變化

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
      

 if (e.Row.RowType == DataControlRowType.DataRow)//判定當前的行是否屬於datarow類型的行
        {
            //當滑鼠放上去的時候 先儲存當前行的背景顏色 並給附一顏色
            e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor=‘#7f9edb‘,this.style.fontWeight=‘‘;");
            //當滑鼠離開的時候 將背景顏色還原的以前的顏色
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor,this.style.fontWeight=‘‘;");
        }

    }

 

 

 

2.這個也很ez

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
         if (e.Row.RowType == DataControlRowType.DataRow)
        {

            switch (e.Row.Cells[1].Text.ToString())
            {
                case "1":
                    e.Row.Cells[1].Text = "加盟司機";
                    break;
                case "2":
                    e.Row.Cells[1].Text = "公司司機";
                    break; 
            }
        }

    }

 

 

 

 

3.行綁定的時候讀取datakeynames中的資料來源欄位

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
      if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DataKey datakey = GridView1.DataKeys[e.Row.RowIndex];
            //string DAA_Del = datakey["DAA_Del"].ToString();

            if (datakey["FOC_Del"].ToString() == "True")
            {
                e.Row.Cells[1].Enabled = false;
                e.Row.Cells[2].Enabled = false;
            }
            else
            {
                e.Row.Cells[1].Enabled = true;
                e.Row.Cells[2].Enabled = true;
            }

    }

 

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)    {       if (e.Row.RowType == DataControlRowType.DataRow)        {            e.Row.Attributes.Add("onclick", "javascript:alert(‘當前ID為:" +DataBinder.Eval(e.Row.DataItem,"CID") + "‘)");        }    }

我做的是點擊當前行擷取該行指定欄位的值!CID為欲求得值的欄位的Id。

GridView是ASP.NET中功能強大的資料顯示控制項,它的RowDataBound事件為我們提供了方便的控制行、列資料的途徑。

要擷取當前行的某個資料列,我在實踐中總結有如下幾種方法:

1. Cells[x].Txt。
     從列儲存格的文本值擷取。這種方法簡單高率,最為常用,但是功能單純。此法存在幾個缺點:
     (1)無法擷取到設定了隱藏屬性的資料列的值,所取到的值為“”(空)。
     (2)只能擷取在HTML中定義過的資料列,無法查詢資料來源中的當前資料行的所有欄位列。一般情況下,通過HTML設定GridView的欄位列的數量往往小於資料來源的實際欄位數量,這是因為從商務邏輯的角度看,並不是所有的欄位都是要顯示在頁面上的。當需要使用沒有被顯示的欄位時,此法就不能直接滿足需求了。

2. e.Row.Cells[x].FindControl("YourcontrolName")。
     這是在儲存格內尋找某個伺服器控制項,從而獲得其資料值。這種方式可以操作儲存格內的伺服器控制項。此法一般用於處理模板列中的資料或控制項。

3. (DataRowView)e.Row.DataItem).Row.ItemArray[x].ToString()。
     此法的核心是e.Row.DataItem,它是GridView的行資料集,為Object類型,將其轉化為DataRowView類型後,可以獲得更多的操作方法。此資料集表示資料來源當前行的全部欄位列,ItemArray[x]是當前行全部欄位列的數組對象,可以通過索引x獲得任意欄位值。此法的強悍之處是可以對資料來源的全部欄位查詢。

4. DataBinder.Eval(e.Row.DataItem, "YourDataFieldName").ToString()。
     此法仍然基於e.Row.DataItem,其特點是更快捷的獲得資料來源的任意欄位值,因為使用了DataBinder.Eval(),需要注意的是不要寫錯欄位名稱。

5. 將e.Row.DataItem轉化為自訂類型,實現資料類型化。
     例如:
    DSRequestTracking.TB_RequestTrackingRow rtrow=(DSRequestTracking.TB_RequestTrackingRow)((DataRowView)e.Row.DataItem).Row;
     RequestStatusDropDownList1.SelectedValue = rtrow.StatusID.ToString();
     其中DSRequestTracking是通過DSRequestTracking.xsd檔案在工程中自訂的強型別DataSet, TB_RequestTrackingRow是VS自動為此強型別產生的建立資料行對象的方法。通過此法,實現了類型化資料的廣泛應用。資料類型化的好處很多,顯而易見的便是傳一個類型資料給方法,取代一大堆參數,另外就是再也不會發生欄位名拼字錯誤的情況。

GridView_RowDataBound 常用方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.