Я получаю сообщение об ошибке Datetime, когда я просто пытаюсь получить значение ячейки из gridview - PullRequest
0 голосов
/ 05 августа 2020

В моем дизайне .aspx у меня в gridview есть поле кнопок apply. Если нажата кнопка «Применить», я хочу получить значение cell[0] из строки, в которой нажата кнопка «Применить». После получения этого значения я хочу обновить столбец exav_id в своей базе данных.

Это фото моей ошибки ]

protected void gvExAv_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "APPLY")
    {
        LoginInfo login = (LoginInfo)Session["login"];
        ApplyDAO applyDAO = new ApplyDAO(login.UserName, login.Password);
        int index = Convert.ToInt32(e.CommandArgument);
        int id = Convert.ToInt32(gvExAv.Rows[index].Cells[0].Text); 


        if (e.CommandName == "APPLY")
        {
            try
            {
                applyDAO.apply(id);
            }
            catch (Exception ex)
            {
                
            }
        }
    }
}

Это мой код на appplyDAO.apply(id):

public void apply(int id)
{
     OracleConnection conn = new OracleConnection(String.Format("Data Source=Neptune; User Id={0}; Password={1}", UserName, Password));
     OracleCommand cmd = new OracleCommand("UPDATE apply SET exav_id = :id", conn);
     cmd.Parameters.AddWithValue(":id", id);

    conn.Open();
     try
    {
        cmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
  
    }
    finally
    {
        conn.Close();
    } 
}

1 Ответ

0 голосов
/ 06 августа 2020

Это означает, что значение находится в строке, но вы ожидаете его как целое число. Также существует проблема преобразования.

Попробуйте следующее:

protected void gvExAv_RowCommand(object sender, GridViewCommandEventArgs e)
{
    GridViewRow gridRow = (GridViewRow)((Control)e.CommandSource).NamingContainer; // add this
    if (e.CommandName == "APPLY")
    {
        LoginInfo login = (LoginInfo)Session["login"];
        ApplyDAO applyDAO = new ApplyDAO(login.UserName, login.Password);
        int index = Convert.ToInt32(e.CommandArgument);
        int id = gridRow.Cells[0].Text;  // this one



        if (e.CommandName == "APPLY")
        {
            try
            {
                applyDAO.apply(id);
            }
        catch (Exception ex)
        {
            
        }
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...