0

切断されたクラスを使用してデータ テーブルを作成し、データ セットの xml ファイルも作成しました。そのテーブルをグリッドにロードします。すべてのコードを program.cs の下に書きましたが、フォーム ロード メソッドからデータ セット オブジェクトにアクセスしようとすると、データ セット オブジェクトが認識されません。コードは次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Data;
using System.IO;

namespace DisconnectedClassDemo
{
    public class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]


        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());



            DataTable studentInfo = new DataTable("studentinfo");

            DataColumn StudentID = new DataColumn("studentID");
            StudentID.DataType = typeof(int);
            StudentID.Caption="StudentID";
            StudentID.AutoIncrement = true;
            StudentID.AutoIncrementSeed = 1;
            StudentID.AutoIncrementStep = 1;


            DataColumn Name = new DataColumn("StudentName", typeof(string));
            Name.MaxLength = 50;
            Name.AllowDBNull = false;
            Name.Caption = "StudentName";

            DataColumn Roll = new DataColumn("StudentRoll", typeof(int));
            Roll.Caption = "StudnetRoll";

            studentInfo.Columns.Add(StudentID);
            studentInfo.Columns.Add(Name);
            studentInfo.Columns.Add(Roll);

            studentInfo.PrimaryKey = new DataColumn[] { StudentID };

            //DataRow rowobj = studentInfo.NewRow();
            //rowobj["studentName"] = "Badhon";
            //rowobj["studentRoll"] = "004";

            //studentInfo.Rows.Add(rowobj);


            DataSet ds = new DataSet("dataset");
            ds.Tables.Add(studentInfo);

            ds.WriteXmlSchema("D:\\Student.xsd");
            ds.WriteXml("D:\\student.xml");



            ds.ReadXmlSchema("d:\\student.xsd");
            ds.ReadXml("D:\\student.xml");







        }
    }



}


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.IO;

namespace DisconnectedClassDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //dataGridView1.DataSource= 
            //dataGridView1.DataMember=

        }




    }
}
4

3 に答える 3

0

Preet Sangha が言うように、データセットの前にフォームを作成して実行しています。

また、データセットは Main メソッド内のローカル変数であるため、フォーム クラスはそれを認識しません。フォーム内でデータセットを作成するか、パラメーターとしてコンストラクターに渡してみてください。

public class Form1(Dataset ds) : Form 
...


...

Application.Run(new Form1(ds));
于 2012-06-13T03:19:04.110 に答える
0

データセットをファイルシステムに書き込むのはなぜですか? インメモリ データセットを作成し、そのデータセットにアクセスしようとしていませんか? フォーム自体でデータセットを宣言してみてください。

これを試して:

            DataTable studentInfo = new DataTable("studentinfo");

        DataColumn StudentID = new DataColumn("studentID");
        StudentID.DataType = typeof(int);
        StudentID.Caption = "StudentID";
        StudentID.AutoIncrement = true;
        StudentID.AutoIncrementSeed = 1;
        StudentID.AutoIncrementStep = 1;


        DataColumn Name = new DataColumn("StudentName", typeof(string));
        Name.MaxLength = 50;
        Name.AllowDBNull = false;
        Name.Caption = "StudentName";

        DataColumn Roll = new DataColumn("StudentRoll", typeof(int));
        Roll.Caption = "StudnetRoll";

        studentInfo.Columns.Add(StudentID);
        studentInfo.Columns.Add(Name);
        studentInfo.Columns.Add(Roll);

        studentInfo.PrimaryKey = new DataColumn[] { StudentID };

        DataSet ds = new DataSet("dataset");
        ds.Tables.Add(studentInfo);

        var rw = ds.Tables[0].NewRow();

        rw["StudentName"] = "Badhon";
        rw["StudentRoll"] = 004;

        ds.Tables[0].Rows.Add(rw);

        MessageBox.Show(ds.Tables[0].Rows.Count.ToString());

        dataGridView1.DataSource = ds.Tables[0];
于 2012-06-13T03:04:10.243 に答える
0

データセットの前にフォームを作成しています

Application.Run(new Form1()); 

この行をデータセットの作成の下に移動します。

于 2012-06-13T03:04:37.810 に答える