2011-07-29 190 views
0

我有GridView.AutoGenerateColumn=trueGridView RowCommand事件不會觸發頁腳模板按鈕點擊

我創建上的RowDataBound頁腳按鈕,當我在按鈕行命令事件單擊不會觸發

這裏是我的代碼:

dt = ESalesUnityContainer.Container.Resolve<IAgentService>().GetAgentMaterialPercentage(); 
grdMaterialPercentage.DataSource = dt; 
grdMaterialPercentage.DataBind(); 

protected void grdMaterialPercentage_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (grdMaterialPercentage.AutoGenerateColumns == true) 
    { 
     if (e.Row.RowType == DataControlRowType.Header) 
     { 
      e.Row.Cells[0].Visible = false; 
     } 

     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      e.Row.Cells[0].Visible = false; 
      if (DataBinder.Eval(e.Row.DataItem, "AgentName").ToString() != string.Empty) 
      { 
       int i = 0; 
       foreach (TableCell c in e.Row.Cells) 
       { 
        if (i >= 3) 
        { 
         TextBox tb = new TextBox(); 
         tb.Text = c.Text; 
         tb.Style.Add("Width", "25px"); 
         tb.Style.Add("Height", "15px"); 
         c.Controls.Clear(); 
         c.Controls.Add(tb); 

        } 
        i++; 
       } 
      } 
      else 
      { 
       e.Row.Visible = false; 
      } 
     } 

     if (e.Row.RowType == DataControlRowType.Footer) 
     { 
      e.Row.Cells[0].Visible = false; 
      int j = 0; 
      foreach (TableCell c in e.Row.Cells) 
      { 

       if (j >= 3) 
       { 
        DataRow dr = dt.Rows[dt.Rows.Count - 1]; 
        LinkButton btn = new LinkButton(); 

        btn.ID = j.ToString(); 

        btn.CommandName ="fghfh"+j.ToString(); 
        btn.Text = "Save" + dr[j - 1].ToString(); 
        btn.CssClass = "button"; 
        btn.Style.Add("align", "center"); 
        btn.CommandArgument = dr[j - 1].ToString(); 
        // btn.OnClientClick = "return ValidateTotalPercentage(this)"; 
        c.Controls.Clear(); 
        c.Controls.Add(btn); 

       } j++; 
      } 
     } 
    } 
} 

回答

1

在哪裏(f.e grdMaterialPercentage.DataBind())位於第一線? 如果在Page_Load中,只有在!Page.IsPostback?的情況下,您是否綁定GridView否則,GridView會再次綁定到數據源,從而防止RowCommand事件被觸發。

1

你有沒有處理Row_Command活動,你必須檢查相應的命令,然後也許測試它?

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
     if (e.CommandName == "Select") 
     { 
      int num = Convert.ToInt32(e.CommandArgument); 

      instTextBox.Text = GridView1.Rows[num].Cells[1].Text; 

      //Or you can also do dis 
      //Set Label lblTest.text = "It Executes"; 
      //just to check if your code reaches here 
     } 
    } 

這將會把你的命令參數到一個文本框,或者你可以簡單地把一些文字一個標籤和檢查,是否執行。

相關問題