Example #1
0
        private void dgv_m_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            DataGridView dgv = (DataGridView)sender;

            //新しい行のセルでなく、セルの内容が変更されている時だけ検証する
            if (e.RowIndex == dgv.NewRowIndex || !dgv.IsCurrentCellDirty)
            {
                return;
            }

            //受注コード2
            if (e.ColumnIndex == 5)
            {
                int    w_juchu_cd1_flg = 0; //0:未入力 1:入力済
                int    w_juchu_cd2_flg = 0; //0:未入力 1:入力済
                string w_seihin_cd;

                if (dgv_m.Rows[e.RowIndex].Cells[4].Value.ToString() != null && dgv_m.Rows[e.RowIndex].Cells[4].Value.ToString() != "")
                {
                    w_juchu_cd1_flg = 1;
                }
                if (dgv_m.Rows[e.RowIndex].Cells[5].Value.ToString() != null && dgv_m.Rows[e.RowIndex].Cells[5].Value.ToString() != "")
                {
                    w_juchu_cd2_flg = 1;
                }
                //受注コード1または受注コード2のどちらかが入力されていたら、受注マスタを読み製品名を表示する
                if (w_juchu_cd1_flg == 1 || w_juchu_cd2_flg == 1)
                {
                    w_seihin_cd = tss.get_juchu_to_seihin_cd(tb_torihikisaki_cd.Text.ToString(), dgv_m.Rows[e.RowIndex].Cells[4].Value.ToString(), e.FormattedValue.ToString());
                    dgv_m.Rows[e.RowIndex].Cells[6].Value  = w_seihin_cd;
                    dgv_m.Rows[e.RowIndex].Cells[7].Value  = tss.get_seihin_name(dgv_m.Rows[e.RowIndex].Cells[6].Value.ToString());
                    dgv_m.Rows[e.RowIndex].Cells[9].Value  = tss.get_seihin_tanka(dgv_m.Rows[e.RowIndex].Cells[6].Value.ToString());
                    dgv_m.Rows[e.RowIndex].Cells[19].Value = get_uriage_su(tb_torihikisaki_cd.Text.ToString(), dgv_m.Rows[e.RowIndex].Cells[4].Value.ToString(), e.FormattedValue.ToString());
                    dgv_m.Rows[e.RowIndex].Cells[20].Value = get_juchu_su(tb_torihikisaki_cd.Text.ToString(), dgv_m.Rows[e.RowIndex].Cells[4].Value.ToString(), e.FormattedValue.ToString());
                }
                else
                {
                    dgv_m.Rows[e.RowIndex].Cells[19].Value = "";
                    dgv_m.Rows[e.RowIndex].Cells[20].Value = "";
                }
            }

            //製品コード
            if (e.ColumnIndex == 6)
            {
                //未入力は許容する
                if (e.FormattedValue.ToString() != null || e.FormattedValue.ToString() != "")
                {
                    //受注コードが入力されている場合、製品コードは変更不可
                    int w_juchu_cd1_flg = 0;    //0:未入力 1:入力済
                    int w_juchu_cd2_flg = 0;    //0:未入力 1:入力済

                    if (dgv_m.Rows[e.RowIndex].Cells[4].Value.ToString() != null && dgv_m.Rows[e.RowIndex].Cells[4].Value.ToString() != "")
                    {
                        w_juchu_cd1_flg = 1;
                    }
                    if (dgv_m.Rows[e.RowIndex].Cells[5].Value.ToString() != null && dgv_m.Rows[e.RowIndex].Cells[5].Value.ToString() != "")
                    {
                        w_juchu_cd2_flg = 1;
                    }
                    //受注コード1または受注コード2のどちらかが入力されていた
                    if (w_juchu_cd1_flg == 1 || w_juchu_cd2_flg == 1)
                    {
                        if (dgv_m.Rows[e.RowIndex].Cells[6].Value.ToString() != e.FormattedValue.ToString())
                        {
                            MessageBox.Show("受注情報に登録されている製品コードは変更できません。");
                            e.Cancel = true;
                            return;
                        }
                    }
                    dgv_m.Rows[e.RowIndex].Cells[7].Value = tss.get_seihin_name(e.FormattedValue.ToString());
                    dgv_m.Rows[e.RowIndex].Cells[9].Value = tss.get_seihin_tanka(e.FormattedValue.ToString());
                    if (dgv_m.Rows[e.RowIndex].Cells[7].Value.ToString() == "")
                    {
                        MessageBox.Show("入力された製品コードは存在しません。");
                        e.Cancel = true;
                        return;
                    }
                }
            }

            //売上数
            if (e.ColumnIndex == 8)
            {
                if (chk_uriage_su(e.FormattedValue.ToString()) == false)
                {
                    MessageBox.Show("売上数は-999999999.99~9999999999.99の範囲で入力してください。");
                    e.Cancel = true;
                    return;
                }
            }
            //販売単価
            if (e.ColumnIndex == 9)
            {
                if (chk_hanbai_tanka(e.FormattedValue.ToString()) == false)
                {
                    MessageBox.Show("販売単価は-999999999.99~9999999999.99の範囲で入力してください。");
                    e.Cancel = true;
                    return;
                }
            }
        }