0

DataGridの特定の列を参照し、すべての値を配列に取得しようとしています。エラーは発生しませんが、問題は、配列の0番目の位置だけが値を持っているように見え、他の位置はnullであるということです。データグリッドには4つのレコードがあります。私は何を間違っているのですか

これが私のコードです:

   private void button1_Click(object sender, EventArgs e)
     {
        string[] arr = new string[10];

        DataTable getdata = new DataTable();
        foreach (DataGridViewRow row in this.dataGridView1.Rows)
        {
            DataGridViewCell cell = row.Cells[1]; 
            {
                if (cell != null && (cell.Value != null))
                {
                    for (int i = 0; i < dataGridView1.Rows.Count; i++)
                    {
                        arr[i] = cell.Value.ToString();
                    }
                }
            }
        }

        if (arr[0] != null)
        {
            textBox3.Text = arr[0].ToString();//Prints value
        }
        else if (arr[1] != null)//Seems to be null
        {
            textBox2.Text = arr[1].ToString();
        }
    }
4

2 に答える 2

1

これを試して:

private void button1_Click(object sender, EventArgs e)
 {
    string[] arr = new string[10];
    int i =  0;

    DataTable getdata = new DataTable();
    foreach (DataGridViewRow row in this.dataGridView1.Rows)
    {
        DataGridViewCell cell = row.Cells[1]; 
        {
            if (cell != null && (cell.Value != null))
            {
                arr[i] = cell.Value.ToString();
            }
            i++;
        }
    }

お役に立てれば。-Corix

于 2012-06-26T21:20:13.803 に答える
1

代わりにこのようなものを試してください

private void button1_Click(object sender, EventArgs e)
{
        List<String> columnValues = new List<String>

        foreach (DataGridViewRow row in this.dataGridView1.Rows)
        {
            DataGridViewCell cell = row.Cells[1]; 
            {
                if (cell != null && (cell.Value != null))
                {
                   columValues.Add(cell.Value.ToString());
                   if (columnValues.Count == 2)
                   {
                      break;
                   }
                }
            }
        }

        if (columnValues.Count > 0)
        {
          if (columnValues.Count < 2)
          {
            textBox3.Text = columnValues[0];//Prints value
          }
          else 
          {
               textBox2.Text = columnValues[1];
          }
        }
    }

アレイが気に入らなかった。11を超えるnull以外の値はフォールオーバーします。そのデータテーブルが何のためにあるのかわかりません。null以外の値のみをコレクションに入れる場合は、nullがないかどうかを確認してください。String.ToString()は少し無意味に見えました。

null以外の2つの値にのみ関心があるため、休憩を追加しました。そして、その背後にある理由を思い付くことができませんが、ロジックの最後のビットを二乗しました。

于 2012-06-26T21:22:26.947 に答える