標籤: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 常用方法