1

「firstName、lastName、assocIDなど」を取得しようとしています。フォームのデータグリッドに表示します。私は新しいプログラマー/スクリプトキディです。これがばかげた質問である場合は申し訳ありません。読み取り可能なデータグリッドエントリにassociateList.firstNameを呼び出す方法がわかりません。

可能であれば、datagridでassociateListのすべてのアソシエートを使用したいと思います。どういうわけか、インデックス参照の基本的なカウンターを検討していました。

私が自分のコードをどのように書いているかについての他の入力も同様にありがたいです。私は新しく、独学です。

つまり、アソシエイトが情報を区切るために列を使用してデータグリッドに表示するようにしたいのです。

データグリッド名は、WindowsフォームのdataGridAssociatesです。

namespace Associate_Tracker
{
    public partial class Form1 : Form
    {
        public class Associate
        {
            //No idea wtf {get; set;} does but I read that I need it?

            public string firstName { get; set; }
            public string lastName { get; set; }
            public string assocRFID { get; set; }
            public int assocID { get; set; }
            public bool canDoDiverts { get; set; }
            public bool canDoMHE { get; set; }
            public bool canDoLoading { get; set; }
        }

        public Form1()
        {
            InitializeComponent();
        }

        private void buttonAddAssoc_Click(object sender, EventArgs e)
        {
            #region Datagrid Creation -- Name: dt
            DataTable dt = new DataTable();
            dt.Columns.Add("First Name");
            dt.Columns.Add("Last Name");
            dt.Columns.Add("RFID");
            dt.Columns.Add("Associate ID#");
            dt.Columns.Add("Diverts");
            dt.Columns.Add("MHE");
            dt.Columns.Add("Loading");
            dataGridAssociates.DataSource = dt;
            #endregion

            //First & Last name splitter
            string allValue = textBoxAssocName.Text;
            string firstNameTemp = String.Empty;
            string lastNameTemp = String.Empty;
            int getIndexOfSpace = allValue.IndexOf(' ');

            for (int i = 0; i < allValue.Length; i++)
            {
                if (i < getIndexOfSpace)
                {
                    firstNameTemp += allValue[i];
                }
                else if (i > getIndexOfSpace)
                {
                    lastNameTemp += allValue[i];
                }
            }
            firstNameTemp = firstNameTemp.Trim(); // To remove empty spaces
            lastNameTemp = lastNameTemp.Trim();   // To Remove Empty spaces
            //End splitter

            int assocIDTemp;    //TryParse succeeds
            bool assocIDparse;  //Bool for TryParse

            //Try Parsing Associate ID to an integer
            //Includes catch -> return
            assocIDparse = int.TryParse(textBoxAssocID.Text, out assocIDTemp);
            if (assocIDparse == false)
            {
                MessageBox.Show("Please use only numbers in the AssocID input");
                return;
            }
            var associateList = new List<Associate>();
            associateList.Add(new Associate
            {
                firstName = firstNameTemp,
                lastName = lastNameTemp,
                assocID = assocIDTemp,
                canDoDiverts = checkBoxDiverts.Checked,
                canDoMHE = checkBoxMHE.Checked,
                canDoLoading = checkBoxLoading.Checked,
            });
            textBoxAssocID.Clear();
            textBoxAssocName.Clear();
            textBoxRFID.Clear();
        }
    }
}
4

2 に答える 2

0
DataTable dt=new DataTable(); 
dt.clear(); 

dt.Columns.Add("First Name");
dt.Columns.Add("Last Name");
dt.Columns.Add("RFID");
dt.Columns.Add("Associate ID#");
dt.Columns.Add("Diverts");
dt.Columns.Add("MHE");
dt.Columns.Add("Loading")

DataRow yourDataRow = dt.NewDataRow();
yourDataRow["First Name"] = //assign the value for FirstName here;
yourDataRow["Last Name"] = //assing the value for LastName here; 
dt.Rows.Add(yourDataRow);

ループでこれを行う場合..これは、どこから始めればよいかを示す良い例になるはずです。

* DataSourceをDataGridに割り当てた後、以下のようにバインドすることを忘れないでください*

GridView1.DataSource=dt;
GridView1.DataBind();
于 2012-11-27T00:26:37.413 に答える
0

これがこれを行うための最も洗練された方法であるとは言いませんが、WinFormsおよびDataGridViewコントロールを使用すると、BindingSourceコントロールを使用してこれを行うことができます。私はあなたがやろうとしていることを達成するために修正されたコードで以下のサンプルを追加しました。

ここで注意すべき重要なポイントは次のとおりです。

  • 上部に作成されたBindingSourceインスタンスに注目してください。これは、コンストラクターでDataGridViewにバインドするために使用した要素です。
  • コンストラクターで、AssociateリストのインスタンスをBindingSourceのデータソースにアタッチします
  • コンストラクターで、BindingSourceをDataGridViewコントロールのデータソースにアタッチします。
  • 最後に、ボタンイベントの下部で、最初にBindingSourceでAddNewを使用してAssociateのインスタンスを作成し(これにより、コンストラクターで作成されたAsociateリストインスタンスで自動的に作成されます)、適切な値を割り当てて、DataGridViewに入力します。直接。

問題があれば教えてください。

    readonly BindingSource _bindingSource = new BindingSource();

    public Form1()
    {
        InitializeComponent();
        _bindingSource.DataSource = new List<Associate>();
        dataGridAssociates.DataSource = _bindingSource;
    }

    public class Associate
    {
        public string firstName { get; set; }
        public string lastName { get; set; }
        public string assocRFID { get; set; }
        public int assocID { get; set; }
        public bool canDoDiverts { get; set; }
        public bool canDoMHE { get; set; }
        public bool canDoLoading { get; set; }
    }

    private void buttonAddAssoc_Click(object sender, EventArgs e)
    {
        //First & Last name splitter
        string allValue = textBoxAssocName.Text;
        string firstNameTemp = String.Empty;
        string lastNameTemp = String.Empty;
        int getIndexOfSpace = allValue.IndexOf(' ');

        for (int i = 0; i < allValue.Length; i++)
        {
            if (i < getIndexOfSpace)
            {
                firstNameTemp += allValue[i];
            }
            else if (i > getIndexOfSpace)
            {
                lastNameTemp += allValue[i];
            }
        }
        firstNameTemp = firstNameTemp.Trim(); // To remove empty spaces
        lastNameTemp = lastNameTemp.Trim(); // To Remove Empty spaces
        //End splitter

        int assocIDTemp; //TryParse succeeds
        bool assocIDparse; //Bool for TryParse

        //Try Parsing Associate ID to an integer
        //Includes catch -> return
        assocIDparse = int.TryParse(textBoxAssocID.Text, out assocIDTemp);
        if (assocIDparse == false)
        {
            MessageBox.Show("Please use only numbers in the AssocID input");
            return;
        }

        var obj = (Associate) _bindingSource.AddNew();
        if (obj != null)
        {
            obj.firstName = firstNameTemp;
            obj.lastName = lastNameTemp;
            obj.assocID = assocIDTemp;
            obj.canDoDiverts = checkBoxDiverts.Checked;
            obj.canDoMHE = checkBoxMHE.Checked;
            obj.canDoLoading = checkBoxLoading.Checked;
        }

        textBoxAssocID.Clear();
        textBoxAssocName.Clear();
        textBoxRFID.Clear();

    }
于 2012-11-27T01:07:27.010 に答える