2 ضمیمه
نحوه مرتبط کردن کمبو باکس های الصاق شده به دیتاگرید متصل به پایگاه داده مربوط به یک جدول
سلام خدمت دوستان و اساتید
برنامه ویندوز فرم ، تحت زبان سی شارپ
کامپوننت مورد استفاده تلریک ، البته اگه بدون تلریک هم شد مشکلی نداره
می خوام یک فرم ورود کالا از دیتابیس بسازم
یک دیتا گرید ویو دارم که توی سطر هاش با استفاده از کمبوباکس می خوام اطلاعات وارد کنم
اطلاعات از دیتابیس توسط linq به کمبوباکس ها متصل شده
یه چیزی مثل تصویر زیر می خواممشکل اینجاست که اگه توی ستون کد کالا ، کد کالا بنویسم و اینتر کنم فقط کد کالا میاره و نام کالا خالی میشه اگه نام کالا بنویسم کد کالا خالی میشه و فقط نامش ثبت میشه که طبق منطق برنامه درسته ولی من می خوام وقتی کد کالا ثایپ شد ستون دوم اتوماتیک فقط نام کالای متناظر رو بیاره و بالعکس این هم کد برنامه ام
using System;
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("کد کالا");
GridViewMultiComboBoxColumn ProductName = new GridViewMultiComboBoxColumn("نام کالا");
RadMultiColumnComboBoxElement mccbEl = new RadMultiColumnComboBoxElement();
private void Form9_Load(object sender, EventArgs e)
{
var dtpcode = (from a in db.StockProductLists
where a.FiscalYearYear == "1399"
orderby a.ProductCode
select new
{
ProductCode = a.ProductCode,
ProductName = a.ProductName.Replace("ي", "ی").Replace("ك", "ک"),
PackQty = a.PackQty,
OnHandUnitQty = a.OnHandUnitQty,
});
ProductCode.DataSource = dtpcode;
ProductCode.DisplayMember = "ProductCode";
ProductCode.ValueMember = "ProductName";
ProductCode.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDown;
ProductCode.FilteringMode = GridViewFilteringMode.DisplayMember;
radGridView1.Columns.Add(ProductCode);
var dtpname = (from a in db.StockProductLists
where a.FiscalYearYear == "1399"
orderby a.ProductCode
select new
{
ProductCode = a.ProductCode,
ProductName = a.ProductName.Replace("ي", "ی").Replace("ك", "ک"),
PackQty = a.PackQty,
OnHandUnitQty = a.OnHandUnitQty,
});
ProductName.DataSource = dtpname;
ProductName.DisplayMember = "ProductName";
ProductName.ValueMember = "ProductCode";
ProductName.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDown;
ProductName.FilteringMode = GridViewFilteringMode.DisplayMember;
radGridView1.Columns.Add(ProductName);
radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
}
private void radGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
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.BestFitColumns();
mccbEl.EditorControl.Columns[0].HeaderText = "کد کالا";
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);
}
}
}
}
نقل قول: نحوه مرتبط کردن کمبو باکس های الصاق شده به دیتاگرید متصل به پایگاه داده مربوط به یک جدول
یعنی واقعا کسی نیست که بتونه جواب بنده رو بده ؟؟؟
شاید هم سطح سوالم خیلی تخصصیه که کسی نمیتونه راه حلی پیدا کنه :متفکر:
نقل قول: نحوه مرتبط کردن کمبو باکس های الصاق شده به دیتاگرید متصل به پایگاه داده مربوط به یک جدول
و همچنان در انتظار برای پیدا کردن راه حل ....
نقل قول: نحوه مرتبط کردن کمبو باکس های الصاق شده به دیتاگرید متصل به پایگاه داده مربوط به یک جدول
در مورد این سرچ کن ببین چیزی که میخوای هست یا نه
1 ضمیمه
نقل قول: نحوه مرتبط کردن کمبو باکس های الصاق شده به دیتاگرید متصل به پایگاه داده مربوط به یک جدول
یه تغییراتی دادم ولی یه مشکلی هست وقتی سطر جدید اضافه می کنم کد کالا و نام کالا خالی میشه!:عصبانی++:
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";
}
}
}
}