Member 13650918 Ответов: 1

Как решить эту ошибку:gridview 'gridview1' запустил событие rowediting, которое не было обработано.


            using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace EmpGrid
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        static DataTable ds = new DataTable();
        private SqlConnection conn = new SqlConnection(@"Data Source=ADMIN-PC\SQLEXPRESS;Initial Catalog=task;User ID=sa;Password=ups");  

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                if (!ds.Columns.Contains("id"))
                    
                          
                   

                ds.Columns.Add("id");
                if (!ds.Columns.Contains("name"))
                ds.Columns.Add("name");
                if (!ds.Columns.Contains("salary"))
                ds.Columns.Add("salary");

             
                // GridView1.DataSource = dt;
                // GridView1.DataBind();

                gvbind();

            }
            }
            protected void gvbind() {  
        conn.Open();
        SqlCommand cmd = new SqlCommand("Select * from empdet", conn);  
        SqlDataAdapter da = new SqlDataAdapter(cmd);  
        DataSet ds = new DataSet();  
        da.Fill(ds);  
        conn.Close();  
        if (ds.Tables[0].Rows.Count > 0) {  
            GridView1.DataSource = ds;  
            GridView1.DataBind();  
        } else {  
            //ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
            GridView1.DataSource = new String[] { };
            GridView1.DataBind();  
            
          
        }  
        }

            protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {
                GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
                Label lbldeleteid = (Label)row.FindControl("lblID");
                conn.Open();
                SqlCommand cmd = new SqlCommand("delete FROM empdet where id='" + Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString()) + "'", conn);
                cmd.ExecuteNonQuery();
                conn.Close();
                gvbind();
            }

            protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
            {

                GridView1.EditIndex = e.NewEditIndex;
                gvbind();
            }
            protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
            {
                int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);

                GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
                Label lblID = (Label)row.FindControl("lblID");

                TextBox textName = (TextBox)row.Cells[0].Controls[0];
                TextBox textadd = (TextBox)row.Cells[1].Controls[0];
               // TextBox textc = (TextBox)row.Cells[2].Controls[0];



                GridView1.EditIndex = -1;
                GridView1.DataBind();
                conn.Open();

                SqlCommand cmd = new SqlCommand("update empdet set name='" + textName.Text + "',salary='" + textadd.Text + "'where id='" + id + "'", conn);


                cmd.ExecuteNonQuery();

                conn.Close();
                gvbind();
            }

            protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
                GridView1.PageIndex = e.NewPageIndex;
                gvbind();
            }
            protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
            {
                GridView1.EditIndex = -1;
                gvbind();



            }

        protected void Add_Click(object sender, EventArgs e)
        {
            GridView1.Visible = true;
            //createnewrow();
            ds.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text);

            TextBox1.Text = "";
            TextBox2.Text = "";
            TextBox3.Text = "";

            GridView1.DataSource = ds;
            GridView1.DataBind();
            GridView1.DataSource = null;

        }

        protected void Save_Click(object sender, EventArgs e)
        {
            //   foreach (DataGridViewRow row in GridView1.Rows)
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                string constring = @"Data Source=ADMIN-PC\SQLEXPRESS;Initial Catalog=task;User ID=sa;Password=ups";
                using (SqlConnection con = new SqlConnection(constring))
                {
                    using (SqlCommand cmd = new SqlCommand("INSERT INTO empdet VALUES( @id,NEWID(),@name, @salary,getdate())", con))
                    {
                        cmd.Parameters.AddWithValue("@id", GridView1.Rows[i].Cells[0].Text);
                        cmd.Parameters.AddWithValue("@name", GridView1.Rows[i].Cells[1].Text);
                        cmd.Parameters.AddWithValue("@salary", GridView1.Rows[i].Cells[2].Text);
                        //cmd.Parameters.AddWithValue("@Name", row.Cells["Name"].Value);
                        //cmd.Parameters.AddWithValue("@Address", row.Cells["Address"].Value);
                        con.Open();
                        cmd.ExecuteNonQuery();
                        con.Close();
                    }
                }


            }
        }
    }
}


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

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

Laxmidhar tatwa technologies

ds берется как глобальный, так и локальный vsriable .global изменение на dt, то есть для таблицы данных

Member 13650918

использование системы;
использование системы.Коллекции.Общий;
использование System.Linq;
использование системы.Сеть;
использование System.Web.UI;
используя системы.Веб.Пользовательского интерфейса.WebControls;
использование System.Data;
используя системы.Данных.Поставщики sqlclient;

пространство имен EmpGrid
{
общественный разделяемого класса файл webform1 : система.Веб.Пользовательского интерфейса.Страницы
{
DataTable dt = новый DataTable();
private SqlConnection conn = new SqlConnection(@"источник данных=ADMIN-PC\SQLEXPRESS;начальный каталог=задача;идентификатор пользователя=sa;пароль=ups");

охраняемых недействительными в(объект отправителя, EventArgs в электронной)
{
ДТ.колонны.Добавить("id");
// если (!ДС.Столбцы.Содержит("имя"))
ДТ.колонны.Добавить("имя");
// если (!ДС.Столбцы.Содержит("зарплата"))
ДТ.колонны.Добавить("зарплата");

если (!это.IsPostBack)
{
// если (!ДС.Столбцы.Содержит("id"))


//ДТ.колонки.Добавить("id");
//// если (!ДС.Столбцы.Содержит("имя"))
//ДТ.колонки.Добавить("имя");
//// если (!ДС.Столбцы.Содержит("зарплата"))
//ДТ.колонки.Добавить("зарплата");




Управления gridview1.Источник данных = ДТ;
Управления gridview1.Привязку();

// gvbind();

}


}
охраняемых недействительными gvbind() {
Коннектикут.Открыть();
SqlCommand cmd = new SqlCommand("Select * from empdet", conn);
SqlDataAdapter da = новый SqlDataAdapter(cmd);
DataSet ds = новый набор данных();
да.Заполнить(ДС);
Коннектикут.Закрывать();
if (ds.Tables[0].Rows.Count > 0) {
Управления gridview1.Источник данных = ДС;
Управления gridview1.Привязку();
} еще {
//ds.Tables[0].Rows.Add(ds.Таблицы[0].NewRow());
Управления gridview1.Источник данных = новая строка[] { };
Управления gridview1.Привязку();


}
}

охраняемых недействительными GridView1_RowDeleting(объект отправителя, GridViewDeleteEventArgs е)
{
GridViewRow row = (GridViewRow)GridView1.Rows[e.Параметр rowindex];
Label lbldeleteid = (метка)строка.FindControl("lblID");
Коннектикут.Открыть();
SqlCommand cmd = new SqlCommand("удалить из empdet, где id='" + конвертировать.ToInt32(GridView1.DataKeys[e.Параметр rowindex].Значение.ToString()) + "'", conn);
УМК.Метод executenonquery();
Коннектикут.Закрывать();
gvbind();
}

охраняемых недействительными GridView1_RowEditing(объект отправителя, GridViewEditEventArgs е)
{

Управления gridview1.EditIndex = е.NewEditIndex;
gvbind();
}
охраняемых недействительными GridView1_RowUpdating(объект отправителя, GridViewUpdateEventArgs е)
{
int id = конвертировать.ToInt32(GridView1.DataKeys[e.Параметр rowindex].Значение);

GridViewRow row = (GridViewRow)GridView1.Rows[e.Параметр rowindex];
Label lblID = строка (Label).FindControl("lblID");

TextBox textName = (текстовое поле)строка.Клетки[1].Элементы управления[0];
TextBox textadd = (текстовое поле)строка.Ячейки[2].Элементы Управления[0];
// TextBox textc = (текстовое поле)строка.Ячейки[2].Элементы Управления[0];



Управления gridview1.EditIndex = -1;
Управления gridview1.Привязку();
Коннектикут.Открыть();

SqlCommand cmd = new SqlCommand("update empdet set name='" + textName.Текст + "',зарплата='" + textadd.Текст + "'где ID='" + идентификатор + "'", соед);


УМК.Метод executenonquery();

Коннектикут.Закрывать();
gvbind();
}

охраняемых недействительными GridView1_PageIndexChanging(объект отправителя, GridViewPageEventArgs е)
{
Управления gridview1.Pageindex было = Е.NewPageIndex;
gvbind();
}
охраняемых недействительными GridView1_RowCancelingEdit(объект отправителя, GridViewCancelEditEventArgs е)
{
Управления gridview1.EditIndex = -1;
gvbind();

Member 13650918

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

Laxmidhar tatwa technologies

В изменении функции row_deleting
Конвертировать.toint32(lbldeleteid.текст)

Laxmidhar tatwa technologies

Возьмите за пределами сетки три текстовых поля
С кнопку и в событие кнопки клик
Добавьте строку в dt глобальную и привяжите сетку

1 Ответов

Рейтинг:
0

Member 13650918

   TextBox textName = (TextBox)row.Cells[0].Controls[0];
   TextBox textadd = (TextBox)row.Cells[1].Controls[0];//change index

 //after code updated
TextBox textName = (TextBox)row.Cells[1].Controls[0];
   TextBox textadd = (TextBox)row.Cells[2].Controls[0];