یه تغییراتی دادم ولی یه مشکلی هست وقتی سطر جدید اضافه می کنم کد کالا و نام کالا خالی میشه!
using System;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using Telerik.WinControls;
using Telerik.WinControls.Data;
using Telerik.WinControls.UI;
namespace program0
{
public partial class Form9 : Form
{
public Form9()
{
InitializeComponent();
}
linqDataContext db = new linqDataContext();
GridViewMultiComboBoxColumn ProductCode = new GridViewMultiComboBoxColumn("کد کالا");
new GridViewMultiComboBoxColumn ProductName = new GridViewMultiComboBoxColumn("نام کالا");
RadMultiColumnComboBoxElement mccbEl = new RadMultiColumnComboBoxElement();
public IQueryable StockProductList ;
public string FiscalYear = "1399";
public string code;
public string name;
private void Form9_Load(object sender, EventArgs e)
{
StockProductList = (from a in db.StockProductLists
where a.FiscalYearYear == FiscalYear
orderby a.ProductCode
select new
{
ProductCode = a.ProductCode,
ProductName = a.ProductName.Replace("ي", "ی").Replace("ك", "ک"),
QtyPerPack = a.QtyPerPack,
shell = a.OnHandPackQty,
single = a.OnHandUnitQty,
OnHandQty = a.OnHandQty
});
ProductCode.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDown;
ProductName.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDown;
ProductCode.FilteringMode = GridViewFilteringMode.DisplayMember;
ProductName.FilteringMode = GridViewFilteringMode.DisplayMember;
radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
radGridView1.NewRowEnterKeyMode = RadGridViewNewRowEnterKeyMode.EnterMovesToNextCell ;
radGridView1.Columns.Add(ProductCode);
radGridView1.Columns.Add(ProductName);
radGridView1.Columns.Add("ضریب کالا");
radGridView1.Columns.Add("کارتن");
radGridView1.Columns.Add("عدد");
radGridView1.Columns.Add("تعداد کل");
rbtn_1.Checked = true;
}
private void radGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
if (rbtn_0.Checked && e.ColumnIndex == 0)
{
mccbEl = e.ActiveEditor as RadMultiColumnComboBoxElement;
if (mccbEl != null)
{
mccbEl.Columns[0].HeaderText = "کد کالا";
mccbEl.Columns[1].HeaderText = "نام کالا";
mccbEl.Columns[2].HeaderText = "ضریب کالا";
mccbEl.Columns[3].HeaderText = "جعبه";
mccbEl.Columns[4].HeaderText = "عدد";
mccbEl.Columns[5].HeaderText = "تعداد کل";
foreach (GridViewDataColumn column in
mccbEl.Columns)
{
column.BestFit();
}
mccbEl.DropDownSizingMode = SizingMode.UpDownAndRightBottom;
mccbEl.DropDownMinSize = new Size(550, 300);
mccbEl.DropDownMaxSize = new Size(550, 300);
mccbEl.AutoSizeDropDownToBestFit = false;
mccbEl.DropDownAnimationEnabled = false;
mccbEl.AutoFilter = true;
FilterDescriptor filterDescriptor = new FilterDescriptor(mccbEl.DisplayMember, FilterOperator.Contains, string.Empty);
mccbEl.EditorControl.MasterTemplate.FilterDescript ors.Add(filterDescriptor);
mccbEl.TextChanged += MccbEl_TextChanged;
}
}
if (rbtn_1.Checked && e.ColumnIndex == 1)
{
mccbEl = e.ActiveEditor as RadMultiColumnComboBoxElement;
if (mccbEl != null)
{
mccbEl.Columns[0].HeaderText = "کد کالا";
mccbEl.Columns[1].HeaderText = "نام کالا";
mccbEl.Columns[2].HeaderText = "ضریب کالا";
mccbEl.Columns[3].HeaderText = "جعبه";
mccbEl.Columns[4].HeaderText = "عدد";
mccbEl.Columns[5].HeaderText = "تعداد کل";
foreach (GridViewDataColumn column in
mccbEl.Columns)
{
column.BestFit();
}
mccbEl.DropDownSizingMode = SizingMode.UpDownAndRightBottom;
mccbEl.DropDownMinSize = new Size(550, 300);
mccbEl.DropDownMaxSize = new Size(550, 300);
mccbEl.AutoSizeDropDownToBestFit = false;
mccbEl.DropDownAnimationEnabled = false;
mccbEl.AutoFilter = true;
FilterDescriptor filterDescriptor = new FilterDescriptor(mccbEl.DisplayMember, FilterOperator.Contains, string.Empty);
mccbEl.EditorControl.MasterTemplate.FilterDescript ors.Add(filterDescriptor);
mccbEl.TextChanged += MccbEl_TextChanged;
}
}
}
private void MccbEl_TextChanged(object sender, EventArgs e)
{
if (mccbEl != null)
{
radGridView2.DataSource = mccbEl.DataSource;
if (radGridView2.RowCount > 0)
{
radGridView2.Columns[0].HeaderText = "کد کالا";
radGridView2.Columns[1].HeaderText = "نام کالا";
radGridView2.Columns[2].HeaderText = "ضریب کالا";
radGridView2.Columns[3].HeaderText = "جعبه";
radGridView2.Columns[4].HeaderText = "عدد";
radGridView2.Columns[5].HeaderText = "تعداد کل";
foreach (GridViewDataColumn column in
radGridView2.Columns)
{
column.BestFit();
}
radGridView2.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
}
}
}
private void radGridView1_UserAddingRow(object sender, GridViewRowCancelEventArgs e)
{
if (radGridView2.RowCount > 0)
{
int zarib = Convert.ToInt32(radGridView2.CurrentRow.Cells[2].Value.ToString());
int carton1 = Convert.ToInt32(radGridView2.CurrentRow.Cells[3].Value.ToString());
int add1 = Convert.ToInt32(radGridView2.CurrentRow.Cells[4].Value.ToString());
int total1= Convert.ToInt32(radGridView2.CurrentRow.Cells[5].Value.ToString());
if (e.Rows[0].Cells[3].Value == null)
{
e.Rows[0].Cells[3].Value = 0;
}
if (e.Rows[0].Cells[4].Value == null)
{
e.Rows[0].Cells[4].Value = 0;
}
int carton = Convert.ToInt32(e.Rows[0].Cells[3].Value.ToString());
int add = Convert.ToInt32(e.Rows[0].Cells[4].Value.ToString());
int total = carton * zarib + add;
if (add == zarib)
{
add = 0;
carton++;
}
else if (add > zarib)
{
carton = carton + add / zarib;
add = add % zarib;
}
e.Rows[0].Cells[0].Value = code;
e.Rows[0].Cells[1].Value = name;
e.Rows[0].Cells[2].Value = zarib.ToString();
e.Rows[0].Cells[3].Value = carton;
e.Rows[0].Cells[4].Value = add;
e.Rows[0].Cells[5].Value = total;
if (total <= total1)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
}
else
{
e.Cancel = true;
}
}
private void rbtn_0_CheckedChanged(object sender, EventArgs e)
{
if (rbtn_0.Checked)
{
ProductCode.DataSource = StockProductList;
ProductCode.DisplayMember = "ProductCode";
ProductCode.ValueMember = "ProductName";
}
if (rbtn_1.Checked)
{
ProductName.DataSource = StockProductList;
ProductName.DisplayMember = "ProductName";
ProductName.ValueMember = "ProductCode";
}
}
}
}