1. 程式人生 > >資料來源繫結控制元件的Row/ItemDataBound事件

資料來源繫結控制元件的Row/ItemDataBound事件

呈現 GridView 控制元件之前,該控制元件中的每一行必須繫結到資料來源中的一條記錄。將某個資料行(用 GridViewRow 物件表示)繫結到 GridView 控制元件中的資料以後,將引發 RowDataBound 事件

  所以我們可以在繫結的同時做一些事件處理,比如顯示格式,js的呼叫等,現在我們就來簡單的介紹一下用法

  首先我們要判斷一下對哪些行處理繫結事件,然後再寫事件

  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if(e.Row.RowType==DataControlRowType.DataRow)
        {
            FangAnInfo ff= (FangAnInfo)e.Row.DataItem;
            Response.Write(ff.AddDate);
        }
    }

上面的這段程式碼主要就是獲得控制元件中某行繫結的資料來源中的值,這個值可以在控制元件中顯示或者不顯示,只要在資料來源中存在就可以了,需要說明的是,如果你繫結資料來源是一個泛型集合,那麼你轉換的時候的型別就是該泛型集合中的元素即物件:FangAnInfo ff= (FangAnInfo)e.Row.DataItem;如果你繫結的資料來源是DataSet或者是DataTable,那麼轉換的時候就是DataRowView:DataRowView drv = (DataRowView)e.Item.DataItem;這樣做的好處,就是可以直接獲得改行中所有你想得到的值,代替了以前繁瑣得到這些值的方法!

我們也可以在裡面處理一下js的事件呼叫,如光幫效果,刪除提示等

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

    {

        if (e.Row.RowType == DataControlRowType.DataRow)

        {

            e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");

            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");

        }

    }

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

          {

              if (e.Row.RowType == DataControlRowType.DataRow)

                {

                    LinkButton l = (LinkButton)e.Row.FindControl("LinkButton1");

                    l.Attributes.Add("onclick", "javascript:return " +

                   "confirm('確認刪除要刪除嗎?')");

          }

其他的repeat和DataList用法一樣,要加上

if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)