2013-12-17 52 views
0

嗨,在這裏我試圖通過在gridview中使用BoundField類後面的代碼實現 gridview中的linkBut​​ton單擊事件。 當我嘗試將單個BoundField值直接添加到網格 作爲page_Load中的一列,並綁定鏈接按鈕 RowbackBoundEvent與單擊鏈接按鈕單擊事件,它 正在觸發linkBut​​ton Click事件以下代碼。linkBut​​ton單擊GridView中的事件時通過GridView中的循環添加綁定字段時未觸發

protected void Page_Load(object sender,EventArgs e) 
{ 

      BoundField bfield = new BoundField(); 
      bfield.HeaderText = "EmpName"; 
      bfield.DataField = "EmpName"; 
      gridView.Columns.Add(bfield); 

      BoundField bfield1 = new BoundField(); 
      bfield1.HeaderText = "Monday"; 
      bfield1.DataField = "Monday"; 
      gridView.Columns.Add(bfield1); 
} 

,並在RowDataBound事件我已經寫了

protected void OnRowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      LinkButton lnkViews = new LinkButton(); 
      lnkViews.ID = "lnkViews"; 
      lnkViews.Text = (e.Row.DataItem as DataRowView).Row["Monday"].ToString(); 
      lnkViews.Click += new EventArgs(linkButton_ClickAction); 
      e.Row.Cells[2].Controls.Add(lnkViews); 


     } 
    } 

protected void linkButton_ClickAction(object sender, EventArgs e) 
{ 
LinkButton lnkView = (sender as LinkButton); 
GridViewRow row = (lnkView.NamingContainer as GridViewRow); 
string id = lnkView.CommandArgument; 
string name = row.Cells[0].Text; this.ModalPopupExtender1.Show(); 
} 

但是,當我試圖通過基於 表列循環添加上述綁定列數這樣的,在Page_Load事件,該事件是不是 射擊。

protected void Page_Load(object sender,EventArgs e) 
{ 
DataTable dtTable = new DataTable(); 

      dtTable= BindGrid(); 

      BoundField boundField; 
      for (int i = 0; i < dtTable.Columns.Count; i++) 
      { 
       string ColumnValue = dtTable.Columns[i].ColumnName; 
       boundField = new BoundField(); 
       boundField.HeaderText = ColumnValue; 
       boundField.DataField = ColumnValue; 
       gridView.Columns.Add(boundField); 
      } 
} 
當我們在基於數據源列的循環使用 上面的代碼創建BoudnField事件

算,它不發射LinkBut​​ton的事件。爲什麼?

+0

你試過行創建的事件,而不是的RowDataBound – 2013-12-17 12:18:25

回答

0

根據我的理解,你正試圖動態地形成網格。

有一件事是綁定字段將不支持冒泡事件。所以最好用滿足您要求的模板字段替換它們。

您需要通過定義ITemplate接口在InstantiateIn方法中分配點擊事件。 OnRowDataBound事件不會出現在圖片中。

下面是供您參考的示例。

http://forums.asp.net/t/1001702.aspx

+0

我已經嘗試過這樣做同樣的事情,你上面建議的,在我也有同樣的問題,becase的我不知道如何解決這個問題在itemtemplates中的問題,我來到這個方法,如果你可以請看鏈接http://stackoverflow.com/questions/20613303/how-to-fire-click-event-of-the-linkbutton-in-gridview-and -show-popup-window-in-a –

+0

是的,你不能直接在InstantiateIn中分配點擊事件,因爲它是單獨的類,頁面變量不能訪問。 嘗試通過java腳本來完成。在網格中添加一個按鈕並將顯示設置爲「無」,在InstantiateIn中爲該鏈接按鈕分配一個帶有onclick屬性的函數,爲該函數分配ID /編號到隱藏字段,調用該函數中的按鈕單擊事件。在鏈接按鈕單擊事件中按鈕單擊事件中編寫代碼,使用隱藏變量值而不是命令參數/文本。 這可能是忙碌的,但絕對有效。 –

相關問題