Событие GridView RowCommand не запускается при нажатии кнопки шаблона нижнего колонтитула - PullRequest
0 голосов
/ 29 июля 2011

у меня есть GridView.AutoGenerateColumn=true.

Я создал кнопку в нижнем колонтитуле на границе строки, когда я щелкаю по кнопке. Событие команды строки не запускается

Вот мой код:

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++;
            }
        }
    }
}

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Вы обработали событие 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
      }
  }

Это поместит ваш командный аргумент в текстовое поле, или вы можете просто поместитьтекст в метке и проверьте, выполнен ли он.

1 голос
/ 29 июля 2011

Где расположены первые строки (например, grdMaterialPercentage.DataBind())? Если в Page_Load, вы привязываете GridView, только если ! Page.IsPostback? В противном случае GridView снова привязывается к источнику данных, что препятствует запуску события RowCommand.

...