5

奇妙な問題があります。基本的に、データグリッドビューとボタンがあります。このボタンをクリックすると、すべての行で列 1 の値 (チェックボックス列) がチェックされます。次に、現在のものに応じて true / false に設定します。

それはすべて問題ありません。

しかし、チェックされているこれらの行で何かを行うための別のボタンがあります。クリックすると、最初の行だけがチェックされていると識別されます。残りはどうやら今はnullです..?

したがって、データグリッドビューでチェックボックス列の値をプログラムで設定してから再度読み取るにはどうすればよいでしょうか。

これにより、チェックボックスが設定され、それらを表示したり、手動でチェックを外したりできます。

foreach (DataGridViewRow row in dgv.Rows)
        {
            var ch1 = new DataGridViewCheckBoxCell();
            ch1 = (DataGridViewCheckBoxCell)row.Cells[0];

            if (ch1.Value == null)
                ch1.Value = false;
            switch (ch1.Value.ToString())
            {
                case "True":
                    ch1.Value = false;
                    break;
                case "False":
                    ch1.Value = true;
                    break;
            }
        }

次に、値をチェックする次のボタンは、null を見つけることです

foreach (DataGridViewRow row in rows)
            {
                var ch1 = new DataGridViewCheckBoxCell();
                ch1 = (DataGridViewCheckBoxCell)row.Cells[0];

                if (ch1.Value == null)
                    ch1.Value = false;
                switch (ch1.Value.ToString())
                {
                    case "True":
                        ch1.Value = true;
                        break;
                    case "False":
                        ch1.Value = false;
                        break;
                }
                var val = row.Cells["EbayListingID"].Value.ToString();
                if (ch1.Value.ToString() == "true") continue;
                var listing = dsEntities.EbayListings.First(x => x.EbayListingID.ToString() == val);
                SubmitListingForReview(listing, false);
            }
4

1 に答える 1

0

初め、

if (ch1.Value.ToString() == "true") continue;

文字列定数が「真」であるのに「真」ではないのはなぜですか?

次に、次のボタンのクリック ハンドラーで、「行」とは何ですか?

foreach (DataGridViewRow row in rows)

私はこのコードを試してみましたが、うまくいきました:

private void button1_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                var ch1 = new DataGridViewCheckBoxCell();
                ch1 = (DataGridViewCheckBoxCell)row.Cells[0];

                if (ch1.Value == null)
                    ch1.Value = false;
                switch (ch1.Value.ToString())
                {
                    case "True":
                        ch1.Value = false;
                        break;
                    case "False":
                        ch1.Value = true;
                        break;
                }
            }
        }

private void button2_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                var ch1 = new DataGridViewCheckBoxCell();
                ch1 = (DataGridViewCheckBoxCell)row.Cells[0];

                if (ch1.Value == null)
                    ch1.Value = false;
                switch (ch1.Value.ToString())
                {
                    case "True":
                        ch1.Value = true;
                        break;
                    case "False":
                        ch1.Value = false;
                        break;
                }
                var val = row.Cells[1].Value;
                if (ch1.Value.ToString() == "True") continue;
                MessageBox.Show("1");
            }
        }
于 2014-10-02T03:07:36.227 に答える