1

私はASP.NETの初心者で、Windowsフォームを勉強しようとしています.Windowsフォームに簡単な学生テーブルを作成しようとしています.Windowsフォームでは、学生テーブルの詳細を追加、更新、削除できます. 削除にはストアド プロシージャを使用し、更新にはトリガーを使用したいと考えています。追加部分を実行しましたが、正常に動作します。トリガーの実装についてはあまり考えていません。現在、CellEndEditプロパティを使用して更新および削除しようとしています。ネットで検索したとき、編集および削除する最速の方法のようです。現在、Argument out of range 例外が発生しています。それを修正するのを手伝ってください。可能であれば、トリガーを実装するアイデアも教えてください。これまでに完成したコードとともに、フォーム ビューとデータベース構造を添付しました。どんな助けでも大歓迎です。

Class1.cs のコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
    public class Class1
    {
    SqlConnection con = new SqlConnection();
    SqlCommand cmd = new SqlCommand();

    public Class1()
    {
        con.ConnectionString = "server=.\\sqlexpress;database=sample;trusted_connection=true";
        cmd.Connection = con;
    }

    public void opencon()
    {
        if (con.State == ConnectionState.Open)
            con.Close();
        con.Open();
    }

    public SqlConnection getcon
    {
        get
        {
            return con;
        }
    }

    public SqlCommand getcmd
    {
        get
        {
            return cmd;
        }

    }

    public DataSet dataview()
    {
        //cmd.CommandType = CommandType.Text;
        //cmd.CommandText = "select * from Student_table";
        SqlDataAdapter adp = new SqlDataAdapter("select * from Student_table",con);
        DataSet ds = new DataSet();
        //adp.SelectCommand = cmd;
        adp.Fill(ds, "Student_table");
        return ds;
    }
}
}

Form.cs のコード

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
    Class1 con = new Class1();
    DataGridView grid = new DataGridView();

    public Form1()
    {
        InitializeComponent();
        //grid.CellEndEdit += new DataGridViewCellEventHandler();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.student_tableTableAdapter.Fill(this.sampleDataSet.Student_table);
    }

    private void button4_Click(object sender, EventArgs e)
    {

        con.opencon();
        lblstatus.Text = "Connected";

    }

    private void button1_Click(object sender, EventArgs e)
    {
        con.opencon();
        con.getcmd.CommandText="insert into Student_table values('"+txtstname.Text+"','"+txtgrname.Text+"', '"+Convert.ToDateTime(dob.Value)+"','"+txtadd1.Text+"','"+txtadd2.Text+"')";
        con.getcmd.ExecuteNonQuery();
        //con.Close();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        con.opencon();
        con.getcmd.CommandType = CommandType.Text;
        con.getcmd.CommandText = "select * from Student_table";
        SqlDataAdapter adp = new SqlDataAdapter();
        DataSet ds = new DataSet();
        adp.SelectCommand = con.getcmd;
        adp.Fill(ds,"Student_table");
        ds = con.dataview();

        dataGridView1.DataSource = ds.Tables["Student_table"].DefaultView;
    }

    private void button3_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {

    }

    private void btndel_Click(object sender, EventArgs e)
    {

    }

    private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {

        string query = string.Format(
        "UPDATE Student_table set {0}='{1}' WHERE id={2}",
        grid.Columns[e.ColumnIndex].Name, grid[e.ColumnIndex, e.RowIndex].Value,
        grid[0, e.RowIndex].Value); //**Argument out of range exception error here**

        try
        {
            con.getcmd.CommandType = CommandType.Text;
            con.getcmd.CommandText = query;
            con.opencon();
            con.getcmd.ExecuteNonQuery();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.StackTrace);
        }
    }
}

}

目標を達成するためにさまざまなことを試していたので、コメントを無視してください:) http://i50.tinypic.com/2yp0kl2.jpg

http://i47.tinypic.com/33az3lw.jpg

4

0 に答える 0