zoukankan      html  css  js  c++  java
  • “System.Web.UI.WebControls.GridViewUpdatedEventArgs”并不包含“RowIndex”的定义 关于RowUpdated和RowUpdating

    RowUpdated和RowUpdating

     当使用 Update 时,每一个更新的数据行都会发生两个事件。执行顺序如下:

    将 DataRow 中的值移至参数值。

    引发 OnRowUpdating 事件。

    执行命令。

    如果该命令设置为 FirstReturnedRecord,返回的第一项结果将放置在 DataRow 中。

    如果存在输出参数,它们将被放在 DataRow 中。

    引发 OnRowUpdated 事件。

    调用 AcceptChanges。

    下面的示例演示正在使用的 RowUpdating 和 RowUpdated 事件。

    public static void CreateDataAdapter(
        string connectionString)
    ...{
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        ...{
            OleDbDataAdapter adapter = new OleDbDataAdapter(
                "SELECT * FROM Customers WHERE CustomerID = ''ALFKI''", connection);

            adapter.InsertCommand = new OleDbCommand(
                "INSERT INTO Customers (CustomerID, CompanyName) VALUES(?, ?)",
                connection);

            adapter.InsertCommand.Parameters.Add(
                "@CustomerID", OleDbType.VarChar, 5, "CustomerID");
            adapter.InsertCommand.Parameters.Add(
                "@CompanyName", OleDbType.VarChar, 30, "CompanyName");

            connection.Open();

            DataSet custDS = new DataSet();
            adapter.Fill(custDS, "Customers");

            DataRow custRow = custDS.Tables["Customers"].NewRow();
            custRow["CustomerID"] = "NEWCO";
            custRow["CompanyName"] = "New Company";
            custDS.Tables["Customers"].Rows.Add(custRow);

            // add handlers
            adapter.RowUpdating += new OleDbRowUpdatingEventHandler(OnRowUpdating);
            adapter.RowUpdated += new OleDbRowUpdatedEventHandler(OnRowUpdated);

            adapter.Update(custDS, "Customers");

            // remove handlers
            adapter.RowUpdating -= new OleDbRowUpdatingEventHandler(OnRowUpdating);
            adapter.RowUpdated -= new OleDbRowUpdatedEventHandler(OnRowUpdated);

            foreach (DataRow row in custDS.Tables["Customers"].Rows)
            ...{
                if (row.HasErrors)
                    Console.WriteLine(row.RowError);
            }
        }
    }

    protected static void OnRowUpdating(object sender,
        OleDbRowUpdatingEventArgs args)
    ...{
        if (args.StatementType == StatementType.Insert)
        ...{
            System.IO.TextWriter writer = System.IO.File.AppendText("Inserts.log");
            writer.WriteLine("{0}: Customer {1} Inserted.",
                DateTime.Now, args.Row["CustomerID"]);
            writer.Close();
        }
    }

    protected static void OnRowUpdated(object sender, OleDbRowUpdatedEventArgs args)
    ...{
        if (args.Status == UpdateStatus.ErrorsOccurred)
        ...{
            args.Row.RowError = args.Errors.Message;
            args.Status = UpdateStatus.SkipCurrentRow;
        }
    }
     


    using System;
    using System.Data;
    using System.Data.OleDb;

    class Class1
    ...{
        static void Main()
        ...{
            string x = "Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI;Initial Catalog=Northwind";
            CreateDataAdapter(x);
        }

        public static void CreateDataAdapter(
            string connectionString)
        ...{
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            ...{
                OleDbDataAdapter adapter = new OleDbDataAdapter(
                    "SELECT * FROM Customers WHERE CustomerID = ''ALFKI''", connection);

                adapter.InsertCommand = new OleDbCommand(
                    "INSERT INTO Customers (CustomerID, CompanyName) VALUES(?, ?)",
                    connection);

                adapter.InsertCommand.Parameters.Add(
                    "@CustomerID", OleDbType.VarChar, 5, "CustomerID");
                adapter.InsertCommand.Parameters.Add(
                    "@CompanyName", OleDbType.VarChar, 30, "CompanyName");

                connection.Open();

                DataSet custDS = new DataSet();
                adapter.Fill(custDS, "Customers");

                DataRow custRow = custDS.Tables["Customers"].NewRow();
                custRow["CustomerID"] = "NEWCO";
                custRow["CompanyName"] = "New Company";
                custDS.Tables["Customers"].Rows.Add(custRow);

                // add handlers
                adapter.RowUpdating += new OleDbRowUpdatingEventHandler(OnRowUpdating);
                adapter.RowUpdated += new OleDbRowUpdatedEventHandler(OnRowUpdated);

                adapter.Update(custDS, "Customers");

                // remove handlers
                adapter.RowUpdating -= new OleDbRowUpdatingEventHandler(OnRowUpdating);
                adapter.RowUpdated -= new OleDbRowUpdatedEventHandler(OnRowUpdated);

                foreach (DataRow row in custDS.Tables["Customers"].Rows)
                ...{
                    if (row.HasErrors)
                        Console.WriteLine(row.RowError);
                }
            }
        }

        protected static void OnRowUpdating(object sender,
            OleDbRowUpdatingEventArgs args)
        ...{
            if (args.StatementType == StatementType.Insert)
            ...{
                System.IO.TextWriter writer = System.IO.File.AppendText("Inserts.log");
                writer.WriteLine("{0}: Customer {1} Inserted.",
                    DateTime.Now, args.Row["CustomerID"]);
                writer.Close();
            }
        }

        protected static void OnRowUpdated(object sender, OleDbRowUpdatedEventArgs args)
        ...{
            if (args.Status == UpdateStatus.ErrorsOccurred)
            ...{
                args.Row.RowError = args.Errors.Message;
                args.Status = UpdateStatus.SkipCurrentRow;
            }
        }
    今天在使用gridview时出现一个低级错误.

    朋友们我有个低级问题,我用GridView编辑功能时,查找不出里面的TextBox
    string classname = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
    其实e.RowIndex怎么点都不出来,要怎么设置才能点出来啊
    “System.Web.UI.WebControls.GridViewUpdatedEventArgs”并不包含“RowIndex”的定义

    原因是我选用的是RowUpdated而非RowUpdating这两个事件是不同的....

    里面RowUpdating才能有这个选项:RowIndex,RowUpdated则没有....

    应用得太少....要多加练习了!!!


    文章出处:DIY部落(http://www.diybl.com/course/1_web/webjs/200855/114463.html)

  • 相关阅读:
    Java学习笔记(二十三):final关键字
    Java学习笔记(二十二):打包程序
    Java框架spring Boot学习笔记(一):开始第一个项目
    Java学习笔记(二十一):类型转换和instanceof关键字
    Java学习笔记(二十):多态
    Java学习笔记(十二):java编译跨平台运行原理
    java学习笔记(十一):重写(Override)与重载(Overload)
    java学习笔记(十):scanner输入
    java学习笔记(九):Java 流(Stream)、文件(File)和IO
    java学习笔记(八):继承、extends、super、this、final关键字
  • 原文地址:https://www.cnblogs.com/no7dw/p/1493691.html
Copyright © 2011-2022 走看看