shanthikalai Ответов: 5

Событие при обновлении строки в GridView в ASP.NET


я ВГА GridView в моей aspx-странице ....я уже привязать значения из MySQL в виде таблицы ...я хочу, чтобы обновить значения в GridView и мои обновленные значения обновляются в MySQL...я пыталась много раз, но мои ценности не могут получить обновление в MySQL..это мой aspx и aspx-файл.в CS pleaselet кодирования я знаю Ват я сделал ошибку ВГА.....

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using MySql.Data.MySqlClient;
using System.IO;


public partial class _Default : System.Web.UI.Page
{
    MySqlConnection con = new MySqlConnection("user id=root; password=admin; database=qms; server=localhost");

   protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            bind();
    }
   public void bind()
   {

       con.Open();
       string q = "select * from exam";
       MySqlDataAdapter da = new MySqlDataAdapter(q, con);
       DataSet ds = new DataSet();
       da.Fill(ds, "emp");
       GridView1.DataSource = ds;
       GridView1.DataBind();
       //con.Close();
   }

    protected void Button1_Click(object sender, EventArgs e)
    {
       bind();
    }

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

    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex = -1;
        bind();
    }
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
        int id = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
        TextBox tname = (TextBox)row.FindControl("nam");
        TextBox tques = (TextBox)row.FindControl("que");
        MySqlCommand cmd = new MySqlCommand("update exam set name1=@name,ques=@ques where id = @id", con);
        cmd.Parameters.Add("@id", MySqlDbType.Int16).Value = id;
        cmd.Parameters.Add("@name", MySqlDbType.VarChar, 30).Value = tname.Text.Trim();
        cmd.Parameters.Add("@ques", MySqlDbType.VarChar,40).Value = tques.Text.Trim();
        con.Open();
        cmd.ExecuteNonQuery();
        GridView1.EditIndex = -1;
        bind();
    }

m@dhu

Вы получаете какую-нибудь ошибку? И всегда закрывайте соединение, когда вы его открываете.

shanthikalai

Обратные вызовы не поддерживаются в TemplateField, поскольку некоторые элементы управления не могут должным образом обновляться в обратном вызове. Выключите обратные вызовы на 'GridView1'.

я получил эту ошибку

AKS94

это не работает.
это дает ошибку, что-индекс равен 0.

AKS94

я получил ошибку
Индекс был вне зоны досягаемости. Должен быть неотрицательным и меньше размера коллекции.
Имя параметра: индекс

5 Ответов

Рейтинг:
1

soni uma

Привет,

Отлаживаете ли вы свой код?

Поставьте точку трассировки на

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)



Также убедитесь, что вы назначили DataKey в gridview


Рейтинг:
1

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Ссылаться - [MSDN] свойство GridView.EnableSortingAndPagingCallbacks[^].

Цитата:
Все столбцы в коллекции Columns должны поддерживать обратные вызовы, чтобы эта функция работала. Если коллекция Columns содержит столбец, который не поддерживает обратные вызовы, например Шаблон, ля исключение NotSupportedException возникает исключение.
Вот в чем проблема.

Итак, положим EnableSortingAndPagingCallbacks = false.
Это решит эту проблему.


Рейтинг:
0

Hitesh Gohel

Привет,

Пожалуйста, используйте этот код в событии обновления строки ниже..

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
        int id = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
        string tname = ((TextBox)row.Cells[0].Controls[0]).Text;
        string tques = ((TextBox)row.Cells[1].Controls[0]).Text;
        MySqlCommand cmd = new MySqlCommand("update exam set name1=@name,ques=@ques where id = @id", con);
        cmd.Parameters.Add("@id", MySqlDbType.Int16).Value = id;
        cmd.Parameters.Add("@name", MySqlDbType.VarChar, 30).Value = tname.Text.Trim();
        cmd.Parameters.Add("@ques", MySqlDbType.VarChar, 40).Value = tques.Text.Trim();
        con.Open();
        cmd.ExecuteNonQuery();
        GridView1.EditIndex = -1;
        bind();
}


если вы получаете результат, то pls дают голосовать за ответ..


Rahul Dihora RV

я получаю ошибку типа "ссылка на объект не указывает на экземпляр объекта" на третьем этапе параметры, например "cmd.Параметры.Добавить("@имя", MySqlDbType.Тип varchar, 30).Значение = tname.Текст.Отделка();
"этот момент, так что же такое решение??????

Рейтинг:
0

Alam Usmani

Label lablid = GridView1. Rows[e.Параметр rowindex].FindControl ("lblid") в качестве метки;
Txtdes текстовое поле = gridview1, на.Ряды[электронный.Параметр rowindex].FindControl ("txtdescription") в виде текстового поля;
Txtpric текстовое поле = gridview1, на.Ряды[электронный.Параметр rowindex].FindControl ("txtprice") в виде текстового поля;
Txtproduct текстовое поле = gridview1, на.Ряды[электронный.Параметр rowindex].FindControl ("txtproductname") как текстовое поле;
TextBox txtquant = GridView1. Rows[e.Параметр rowindex].FindControl ("txtquantity") как текстовое поле;
TextBox txttype = GridView1. Rows[e.Параметр rowindex].FindControl ("txttype") как текстовое поле;


Member 10429356

Событие обновления строки в GridView in ASP.NET пример

Рейтинг:
0