Member 13809843 Ответов: 1

Я хочу получить значение ячейки из grideview при нажатии кнопки


у меня есть представление сетки, и я хочу взять значение ячейки из одного столбца и использовать это значение для перехода на другую страницу, которая показывает полный профиль этого студента
вместо того чтобы принимать значение из ячейки он принимает только ноль в качестве аргумента

Что я уже пробовал:

protected void Button1_Click(object sender, EventArgs e)
    {
        string year = TextBox1.Text;
        studentDataContext db = new studentDataContext();
        var stud = from p in db.s_profs
                   where p.stdpyear == TextBox1.Text || p.stdname == TextBox2.Text
                   select new { p.stud_id, p.stitle, p.stdname, p.stdcurcity, p.stdorgnm, p.stdpyear, p.stdcourse };

        /* var q =
             from a in db.GetTable<stud_reg>()
             where a.uyear == TextBox1.Text
             select  a.category, a.uprefix,a a.uemail ;*/
        GridView1.DataSource = stud;
        GridView1.DataBind();
    }


protected void btnSubmit_Click(object sender, EventArgs e)
   {
       Response.Redirect("gridprof.aspx?stud_id =" + studu);
   }



protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    GridViewRow row = GridView1.SelectedRow;
    studu = Convert.ToInt16(row.Cells[1].Text);

    Response.Write(studu);

}

Maciej Los

Попробуйте отладить свой код, чтобы выяснить, где вы допустили ошибку.

1 Ответов

Рейтинг:
2

Maciej Los

Например, у вашей проблемы может быть несколько причин row.Cells[1] не содержит студенческого билета или значения, переданного в Convert.ToInt16() метод превосходит Типа INT16.Максвеллову[^].

Я бы попробовал получить студенческий билет таким образом:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
      // Convert the row index stored in the CommandArgument
      // property to an Integer.
      int index = Convert.ToInt32(e.CommandArgument);
      // Retrieve the row that contains the button clicked 
      // by the user from the Rows collection.
      GridViewRow row = ContactsGridView.Rows[index];
     studu = Convert.ToInt32(row.Cells[1].Text);
}


Подробнее на сайте MSDN: GridView.Событие RowCommand (System.Web.UI.WebControls)[^]