none
迴圈的問題 RRS feed

  • 問題

  • 我想用比對的方式新增資料

    並在有相同名稱的欄位下方新增的欄位並自動增加流水號

    第一次執行沒問題

    如果我新增完A001

    在新增別的

    之後再回來新增A001這個選項

    就不會接下去新增

    會直接新增在第0列

     for (int y = 1; y <= dataGridView1.RowCount-1;y++)
                    {
                       // MessageBox.Show(textBox1.Text);
                        if (textBox1.Text == dataGridView1.Rows[y - 1].Cells[1].Value.ToString() &&
                            textBox1.Text + "-" + (y + 1).ToString("000") != dataGridView1.Rows[y].Cells[2].Value.ToString())
                        {
                            //相同流水號下方新增一行
                            DataGridViewRow dgr = new DataGridViewRow();
                            dataGridView1.Rows.Insert(y, dgr);
                            this.dataGridView1.Rows[y].Cells[1].Value = textBox1.Text;//新增料號                            
                            this.dataGridView1.Rows[y].Cells[2].Value = textBox1.Text + "-" + (y+1).ToString("000");//新增流水號
                            this.dataGridView1.Rows[y].Cells[3].Value = textboxname.Text;//新增品名
                            this.dataGridView1.Rows[y].Cells[4].Value = cboaddress.Text;//儲位
                            this.dataGridView1.Rows[y].Cells[5].Value = cbomachineaddress.Text;//機種儲位              
                            this.dataGridView1.Rows[y].Cells[6].Value = textboxuse.Text;//使用次數
                            this.dataGridView1.Rows[y].Cells[7].Value = textboxtime.Text;//可用次數
                            this.dataGridView1.Rows[y].Cells[8].Value = textboxps.Text;//備註
                            this.dataGridView1.Rows[y].Cells[9].Value = textboxsefe.Text;//安全庫存                          
                            break;   
                        }
                        else if (textBox1.Text != dataGridView1.Rows[y - 1].Cells[1].Value.ToString())
                        {
                            DataGridViewRow dgr = new DataGridViewRow();                                              
                            dataGridView1.Rows.Insert(0, dgr);
                            this.dataGridView1.Rows[0].Cells[1].Value = textBox1.Text;//新增料號                            
                            this.dataGridView1.Rows[0].Cells[2].Value = textBox1.Text + "-" + (y+1).ToString("000");//新增流水號
                            this.dataGridView1.Rows[0].Cells[3].Value = textboxname.Text;//新增品名
                            this.dataGridView1.Rows[0].Cells[4].Value = cboaddress.Text;//儲位
                            this.dataGridView1.Rows[0].Cells[5].Value = cbomachineaddress.Text;//機種儲位              
                            this.dataGridView1.Rows[0].Cells[6].Value = textboxuse.Text;//使用次數
                            this.dataGridView1.Rows[0].Cells[7].Value = textboxtime.Text;//可用次數
                            this.dataGridView1.Rows[0].Cells[8].Value = textboxps.Text;//備註
                            this.dataGridView1.Rows[0].Cells[9].Value = textboxsefe.Text;//安全庫存 
                            break;
                        }
         
                        }

    • 已編輯 XX阿忠XX 2014年10月24日 上午 07:48
    2014年10月24日 上午 06:24

解答

  • 看不太懂 你要的結果... 你可試試以下

    private void Form1_Load(object sender, EventArgs e)
            {
                dataGridView1.Columns.Add("C1", "新增料號");
                dataGridView1.Columns.Add("C2", "新增流水號");
                dataGridView1.Columns.Add("C3", "新增品名");
                dataGridView1.Columns.Add("C4", "新增儲位");
                dataGridView1.Rows.Add("A123456", "000", "產品名稱", "2");
            }

            private void button1_Click(object sender, EventArgs e)
            {
                object[] obj = new object[4] { textBox1.Text.Trim(), textBox2.Text.Trim(), textBox3.Text.Trim(), textBox4.Text.Trim() };

                for(int i = 0 ; i < dataGridView1.Rows.Count ; ++i)
                {
                    if((textBox1.Text.Trim() == dataGridView1.Rows[i].Cells["C1"].Value.ToString()) &&
                        textBox2.Text.Trim() == dataGridView1.Rows[i].Cells["C2"].Value.ToString()
                        )
                    {
                        
                        dataGridView1.Rows.Insert(i + 1, obj);
                        break;
                    }
                    else if(((textBox1.Text.Trim() != dataGridView1.Rows[i].Cells["C1"].Value.ToString()) &&
                        textBox2.Text.Trim() != dataGridView1.Rows[i].Cells["C2"].Value.ToString()
                        ))
                    {
                        dataGridView1.Rows.Insert(i + 1, obj);
                        break;
                    }
                }
            }

    • 已標示為解答 XX阿忠XX 2014年10月28日 上午 03:52
    2014年10月24日 上午 09:58