2017-02-17 14 views
0

Как выполнить записи удаления и обновления в таблице SQL из представления сетки в C#. Я пробовал это разными способами, но это никоим образом не работает. Пожалуйста, помогите мне решить эту проблему, чтобы добавить функцию удаления и редактирования в мое представление сетки для редактирования моей таблицы sql.Как выполнить удаление и редактирование в sql из вида сетки в C#

protected void userlist_RowDeleting(object sender, GridViewDeleteEventArgs e) 
    { 
      userlist.DeleteRow(e.RowIndex); 

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

    protected void userlist_RowUpdating(object sender, GridViewUpdateEventArgs e) 
    { 
     SqlConnection con = new SqlConnection(); 
     try 
     { 
      con.ConnectionString = ConfigurationManager.ConnectionStrings["PMS"].ToString(); 

      if (con.State == ConnectionState.Closed) 
      { 
       con.Open(); 
      } 

      // SqlCommand cmd = "UPDATE UserDT SET (UserId,UserName, Password, Email, PhoneNumber)" + "VALUES ('"+ UserName.Text +"' + tbxPassword.Text + tbxPermission.Text + "');"; 
      cmd.ExecuteNonQuery(); 
     } 
     catch (Exception ex) 
     { 
      Note.Text = ex.Message; 
     } 
    } 
+0

это поможет [Asp.net вставка, редактирование, обновление, удаление данных в GridView] (HTTP : //www.aspdotnet-suresh.com/2011/02/how-to-inserteditupdate-and-delete-data.html). –

+0

спасибо, но не работает должным образом. –

+0

Он должен работать, вы можете пропустить что-то важное. Можете ли вы обновить свой вопрос здесь с помощью кода, который вы пробовали, и сведения об ошибке, если таковые имеются? –

ответ

0

вы можете использовать, как показано ниже. Для вставки из GridView столбцов Design помечать

<Columns> 
    <FooterTemplate> 
    <asp:LinkButton ID="btnAddNew" Text="Add New" runat="server" CommandName="AddNew" ToolTip="ADD"/> 
    </FooterTemplate> 
    </asp:TemplateField> 
</Columns> 

protected void EmpGrid_Command(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName.Equals("AddNew")) 
    { 
     TextBox txtf = (TextBox)EmpGrid.FooterRow.FindControl("txtFooterFname"); 
     TextBox txtl = (TextBox)EmpGrid.FooterRow.FindControl("txtfooterLname"); 
     TextBox txtq = 
       (TextBox)EmpGrid.FooterRow.FindControl("txtfooterqualification"); 
     TextBox txtd = 
       (TextBox)EmpGrid.FooterRow.FindControl("txtfooterdecription"); 
     TextBox txts = (TextBox)EmpGrid.FooterRow.FindControl("txtfootersalary"); 

     // For Inserting New Row 
     string insrtquery = "insert into EMPTable 
          (fname,lname,qualification,designation,sal) values 
          ('" + txtf.Text + "','" + txtl.Text + "', 
          '" + txtq.Text + "','" + txtd.Text + "','" + 
            txts.Text + "')"; 
     da = new SqlDataAdapter(insrtquery, con); 
     DataSet ds = new DataSet(); 
     da.Fill(ds,"inserted"); 
     Bindemployees(); 
    }  
} 

protected void EmpGrid_Updating(object sender, GridViewUpdateEventArgs e) 
{ 
int empid = Convert.ToInt32(EmpGrid.DataKeys[e.RowIndex].Value.ToString()); 
string fname = EmpGrid.DataKeys[e.RowIndex].Values["fname"].ToString(); 
string lname = EmpGrid.DataKeys[e.RowIndex].Values["lname"].ToString(); 
TextBox txtq = 
     (TextBox)EmpGrid.Rows[e.RowIndex].FindControl("txtEditqualification"); 
TextBox txtd = 
     (TextBox)EmpGrid.Rows[e.RowIndex].FindControl("txtEditdesignation"); 
TextBox txts = 
     (TextBox)EmpGrid.Rows[e.RowIndex].FindControl("txtEditsalary"); 

string updatequery = "update EMPTable set qualification='" + txtq.Text + 
        "',designation='" + txtd.Text + "',sal='" + txts.Text + "' 
        where empid='" + empid + "'"; 
DataSet ds = new DataSet(); 
da = new SqlDataAdapter(updatequery,con); 
da.Fill(ds,"added"); 
EmpGrid.EditIndex = -1; 
Bindemployees(); 
} 

protected void EmpGrid_Deleting(object sender, GridViewDeleteEventArgs e) 
{ 
int empid = Convert.ToInt32(EmpGrid.DataKeys[e.RowIndex].Value.ToString()); 
da = new 
SqlDataAdapter("delete from EMPTable where empid='" + empid + "'", con); 
DataSet ds = new DataSet(); 
da.Fill(ds,"deleted"); 
Bindemployees(); 
} 

Для лучшего понимания этой ссылки

http://reddyinfosoft.blogspot.in/2012/07/insert-edit-update-and-delete-with-in.html

+0

Извините, но я получаю индекс вне диапазона Исключение для использования этого кода, я уже пробовал использовать похожий код, в то время я также получал исключение индекса вне диапазона. –

+0

Решенный указатель Вне диапазона Исключение теперь .... Я не могу принять ввод в текстовое поле из сетки для обновления БД с новой записью Я получаю NULL в текстовом поле –

+0

@ROHITMANDALAPU привет, вы использовали 'e.CommandName. Equals ("AddNew") 'в' EmpGrid_Command', как показано в приведенной выше ссылке? – Vara

0

Вы связываетесь с DataTable. Попробуйте следующее:

DataTable sourceData = (DataTable)userlist.DataSource; 
sourceData.Rows[e.RowIndex].Delete(); 
userlist.DataSource = sourceData; 
userlist.DataBind(); 
+0

извините, но вы получите следующую ошибку. Исключение типа «System.InvalidCastException» произошло в DB Prac.dll, но не было обработано в коде пользователя Дополнительная информация: Не удалось наложить объект типа «System.Data.DataSet» на тип «System.Data.DataTable» ». –