2016-08-24 4 views
1

Я добавил параметр редактирования/обновления в Gridview связанных данных из таблицы в моей базе данных TextBooks. Я разрешаю это, если что-то изменится по дороге, после чего администратор может редактировать/обновлять информацию. В настоящее время я могу нажать кнопку «Изменить тип» в информации, а затем привязать ее к текущей странице Grid на странице, но не сохраняет ее в базе данных и, покинув страницу и возвращаясь к ней, вернется к старой стоимость. После выполнения кода к методу BindGrid() я считаю, что я где-то ошибся, но не могу полностью понять, что мне не хватает.Сохранение обновленной строки Gridview в моей таблице базы данных

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!this.IsPostBack) 
     { 
      DataTable dt = new DataTable(); 
      string query = "select * from textBooks "; 
      using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["HUTDMSConnectionString"].ToString())) 
      using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection)) 


       adapter.Fill(dt); 
      ViewState["allBooks"] = dt; 
      this.BindGrid(); 
     } 
    } 

    protected void BindGrid() 
    { 
     GridView1.DataSource = ViewState["allBooks"] as DataTable; 
     GridView1.DataBind(); 
    } 

    protected void OnRowEditing(object sender, GridViewEditEventArgs e) 
    { 
     GridView1.EditIndex = e.NewEditIndex; 
     this.BindGrid(); 
    } 

    protected void OnUpdate(object sender, EventArgs e) 
    { 
     GridViewRow row = (sender as LinkButton).NamingContainer as GridViewRow; 

     string Ancillary = (row.Cells[3].Controls[0] as TextBox).Text; 
     string BookActive = (row.Cells[4].Controls[0] as TextBox).Text;   
     string InactiveDate = (row.Cells[6].Controls[0] as TextBox).Text; 
     string Author = (row.Cells[7].Controls[0] as TextBox).Text; 
     string Publisher = (row.Cells[8].Controls[0] as TextBox).Text; 
     string EditionAndDate = (row.Cells[9].Controls[0] as TextBox).Text; 
     string Imprint = (row.Cells[10].Controls[0] as TextBox).Text; 
     string eISBN = (row.Cells[13].Controls[0] as TextBox).Text; 
     string ebookAvailable = (row.Cells[14].Controls[0] as TextBox).Text; 
     string Notes = (row.Cells[15].Controls[0] as TextBox).Text; 

     DataTable dt = ViewState["allBooks"] as DataTable; 

     dt.Rows[row.RowIndex]["Ancillary"] = Ancillary; 
     dt.Rows[row.RowIndex]["BookActive"] = BookActive; 
     dt.Rows[row.RowIndex]["InactiveDate"] = InactiveDate; 
     dt.Rows[row.RowIndex]["Author"] = Author; 
     dt.Rows[row.RowIndex]["Publisher"] = Publisher; 
     dt.Rows[row.RowIndex]["EditionAndDate"] = EditionAndDate; 
     dt.Rows[row.RowIndex]["Imprint"] = Imprint; 
     dt.Rows[row.RowIndex]["eISBN"] = eISBN; 
     dt.Rows[row.RowIndex]["ebookAvailable"] = ebookAvailable; 
     dt.Rows[row.RowIndex]["Notes"] = Notes; 


     ViewState["allBooks"] = dt; 
     GridView1.EditIndex = -1; 
     this.BindGrid(); 
    } 

ответ

0

Так что вы сейчас делаете, потянув данных из базы данных, сохраняя его в GridView, а затем редактировать данные в GridView. Как только вы вызываете эту команду databind, эти данные становятся независимыми от базы данных. Чтобы сохранить эти данные в базе данных, я бы рекомендовал использовать SqlDataAdapter Update method в методе OnUpdate. Это позволит вам сохранить значения обновления обратно в datarow и сохранить их в базе данных, следуя аналогичной стратегии, как при заполнении GridView.

+0

im честно потерял на том, что я делаю, просто прочитайте эту страницу по методу обновления и не см., Как я включаю это точно с тем, что у меня есть – frostyBolt

Смежные вопросы