مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

bmv

عضویت از 1394/01/03

گرید ویو، شماره ردیف را تکراری نمایش میدهد

  • پنجشنبه 13 دی 1397
  • 16:02
تشکر میکنم

باسلام خدمت دوستان
در پروژم بعد از اینکه عمل درج انجام میشه، پیغامی گذاشتم مبنی بر اینکه: آیا اقلام جدیدی میخواهید اضافه کنید؟
که کاربر اگر گزینه Yes را انتخاب کنه، دوباره اطلاعات رو میگیره و با همون شماره فاکتور و تاریخ درج میکنه.
اطلاعات درج میشه ولی مشکل اینکه شماره ردیفم در گرید ویو تکراری نمایش میده، درحالی که در جدول دیتابیس شماره ردیف درسته درج شده.
من از کد زیر استفاده کردم:

private void btnInsert_Click(object sender, EventArgs e)
{
        db = new LinqToTrazoDataContext();
        var fcTable = new FactorSaleTable();
                 
           fcTable.SaleDate = DateTime.Now;
           fcTable.FactorNo = int.Parse(txtCodFactor.Text);
           fcTable.CommodCodFact = txtSaleCodCommodity.Text;
           fcTable.CommodName = cmbCommodityName.Text;
           fcTable.CompanyName = txtNameCO.Text;
           fcTable.Number = Int16.Parse(txtNumber.Text);
           fcTable.TotalPrice = float.Parse(txtTotalPrice.Text);
           fcTable.Weight = float.Parse(txtWeight.Text);
           fcTable.TotalWeight = float.Parse(txtTotalWeight.Text);
           fcTable.CommodSize = txtSize.Text;
           fcTable.UnitPrice = float.Parse(txtUnitPrice.Text);
           fcTable.Tax = float.Parse(txtTax.Text);
           fcTable.Dicount = float.Parse(txtTax.Text);
               
        db.FactorSaleTables.InsertOnSubmit(fcTable);
        db.SubmitChanges();
        dgvSalesInvoi.DataSource = db.FactorSaleTables;
        DialogResult result = MessageBox.Show("آیا اقلام جدیدی میخواهید وارد کنید؟", 
                    "وضعیت خرید", MessageBoxButtons.YesNo, MessageBoxIcon.Question, 
                    MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
        if (result == DialogResult.Yes)
        {
            txtNumber.Text = "0";
            txtWeight.Text = "0";
            txtTotalWeight.Text = "0";
            txtTotalPrice.Text = "0";
 
            db = new LinqToTrazoDataContext();
            fcTableYes = new FactorSaleTable();
            fcTableYes.SaleDate = DateTime.Now;
            fcTableYes.FactorNo = int.Parse(txtCodFactor.Text);
            fcTableYes.CommodCodFact = txtSaleCodCommodity.Text;
            fcTableYes.CommodName = cmbCommodityName.Text;
            fcTableYes.CompanyName = txtNameCO.Text;
            fcTableYes.Number = Int16.Parse(txtNumber.Text);
            fcTableYes.TotalPrice = float.Parse(txtTotalPrice.Text);
            fcTableYes.Weight = float.Parse(txtWeight.Text);
            fcTableYes.TotalWeight = float.Parse(txtTotalWeight.Text);
            fcTableYes.CommodSize = txtSize.Text;
            fcTableYes.UnitPrice = float.Parse(txtUnitPrice.Text);
            fcTableYes.Tax = float.Parse(txtTax.Text);
            fcTableYes.Dicount = float.Parse(txtTax.Text);
 
            db.FactorSaleTables.InsertOnSubmit(fcTableYes);
            db.SubmitChanges();
            dgvSalesInvoi.DataSource = db.FactorSaleTables;
        }
        else if (result == DialogResult.No)
        {
            var lastRecord = db.FactorSaleTables.Select(fn => fn.FactorNo);
            txtCodFactor.Text = (lastRecord.Max() + 1).ToString();
            txtNumber.Clear();
            txtWeight.Clear();
            txtTotalWeight.Clear();
            txtTotalPrice.Clear();
        }
        if (btnInsert.Text == "ویرایش")
       {
             SelectedIndexId = int.Parse(dgvSalesInvoi.CurrentRow.Cells["RowFact"].Value.ToString());
 
             db = new LinqToTrazoDataContext();
             var fcTableEdit = db.FactorSaleTables.Where(c=>c.RowFact==SelectedIn  dexId).Single();                
             //SaleDate = DateTime.Now,
              //FactorNo = int.Parse(txtCodFactor.Text),
               fcTableEdit.CommodCodFact = txtSaleCodCommodity.Text;
               fcTableEdit.CommodName = cmbCommodityName.Text;
               fcTableEdit.CompanyName = txtNameCO.Text;
              fcTableEdit.Number = Int16.Parse(txtNumber.Text);
              fcTableEdit.TotalPrice = float.Parse(txtTotalPrice.Text);
              fcTableEdit.Weight = float.Parse(txtWeight.Text);
              fcTableEdit.TotalWeight = float.Parse(txtTotalWeight.Text);
              fcTableEdit.CommodSize = txtSize.Text;
             fcTableEdit.UnitPrice = float.Parse(txtUnitPrice.Text);
             fcTableEdit.Tax = float.Parse(txtTax.Text);
             fcTableEdit.Dicount = float.Parse(txtTax.Text);
                     
            btnInsert.Text = "درج";
            //db.FactorSaleTables.InsertOnSubmit(fcTableEdit);
            db.SubmitChanges();
            dgvSalesInvoi.DataSource = db.FactorSaleTables;
 
            txtNumber.Clear();
            txtWeight.Clear();
            txtTotalWeight.Clear();
            txtTotalPrice.Clear();
        }          
}

ردیف جدل فاکتورم در دیتابیس بصورت زیره:

همانطور که میبینید ریف تکراری ندارم.

ولی در گریدویم پروژم بعد از اینکه هر بار قبول میکنم که میخوام اقلام جدید وارد کنم،ردیف تکراری در گرید ویو نمایش میده، ولی برا اقلام جدید نه،برنامه درست کار میکنه، فقط شماره ردیف به اندازه تعداد اقلامی که با یک شماره فاکتور ثبت شده فاصلست،گرید ویو پروژه بصورت زیره:

ولی شماره ردیف در دیتابیس درست درج شده.

ممنون میشم راهنماییم کنید که کدم کجاش مشکل داره و چه کدی باید بجاش بنویسم؟
اگر تکنیک برنامم هم مشکل داره یا نظری بهتر دارید ممنون میشم راهنماییم کنید.
باتشکر

پاسخ های این پرسش

تعداد پاسخ ها : 0 پاسخ
در حال حاضر هیچ پاسخی ارسال نشده است
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)