Метод GridView_RowUpdating не работает правильно - PullRequest
0 голосов
/ 14 сентября 2018

В моем проекте asp.net у меня есть GridView , и мне нужно добавить возможность редактировать строки .Я не могу использовать ObjectDataSource из-за специфики моего проекта.Вот мой метод:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {                  
        GridViewRow row = GridView1.Rows[e.RowIndex];      
        string constr = ConfigurationManager.ConnectionStrings["postgresConnectionString"].ConnectionString;
        using (NpgsqlConnection cn = new NpgsqlConnection(constr))
        {                
            int ID = Convert.ToInt32(GridView1.Rows[e.RowIndex].Cells[1].Text);
            string Name = GridView1.Rows[e.RowIndex].Cells[2].Text;
            string Date = GridView1.Rows[e.RowIndex].Cells[3].Text;
            string Nodes = GridView1.Rows[e.RowIndex].Cells[4].Text;

            string query = "UPDATE vacations SET name=@Name,date=@Date,nodes=@Nodes Where id=@ID";
                NpgsqlCommand cmd = new NpgsqlCommand(query, cn);
                cmd.Parameters.Add("@Name", NpgsqlDbType.Varchar).Value = Name;
                cmd.Parameters.Add("@Date", NpgsqlDbType.Varchar).Value = Date;
                cmd.Parameters.Add("@Nodes", NpgsqlDbType.Varchar).Value = Nodes;
                cmd.Parameters.Add("@Id", NpgsqlDbType.Integer).Value = ID;
                cn.Open();
                cmd.ExecuteNonQuery();
                cn.Close();            
        }

    }
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        GridView1.DataBind();
    }

Вот способ, которым я создаю столбцы для моего GridView (в случае необходимости), он идет вручную, нажимая кнопку:

protected void Button3_Click(object sender, EventArgs e)
    {
 conn.Open();

            bf1.HeaderText = "Number";
            bf1.DataField = "id";
            bf1.ReadOnly = true;
            bf1.SortExpression = "NomerVac";               

            bf2.HeaderText = "Date of vacation";
            bf2.DataField = "date";
            bf2.SortExpression = "DataVac";

            bf3.HeaderText = "Additional info";
            bf3.DataField = "nodes";
            bf3.SortExpression = "PrimVac";

            GridView1.Columns.Add(bf1);
            GridView1.Columns.Add(bf2);
            GridView1.Columns.Add(bf3);               

            NpgsqlCommand cmd = new NpgsqlCommand();
            NpgsqlDataAdapter sqlDavac = new NpgsqlDataAdapter("SELECT id, date, nodes FROM vacations where name = '" + (string)Session["Name"] + "'  ", conn);
            DataTable dtblvac = new DataTable();

            sqlDavac.Fill(dtblvac);
            GridView1.DataSource = dtblvac;
            GridView1.DataBind();
   }

Когда я нажимаюредактировать, я не получаю ошибки, он просто стирает все данные в столбцах.Вы можете видеть это на скриншоте: прежде чем я нажму изменить Before i click edit

и после: enter image description here

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