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

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

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

پنج شنبه, 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();
        }          
}

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

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

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

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

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

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید