PDA

View Full Version : گرید جانوس در حالت unbound



tefos666
یک شنبه 14 تیر 1394, 13:59 عصر
باسلام
من در حال طراحی یک فرم سفارش خرید هستم

می خواهم کاربر بصورت unbound در گرید اطلاعات وارد کند

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

1- کلا میخوام وقتی کلید insert رو میزنم 1 سطر اضافه بشه و بره رو سلول اول اون سطر وایسته
2- تا زمانی که کل سلول های سطری که روش هستم خالی هست اجازه ایجاد سطر دوم رو با insert نده
3- بعد از پر کردن هر سلول و فشردن Enter به سلول بعدی بره و همینطور تا وقتی که به آخرین سلول رسید اگر همش پر بود یک سطر جدید ایجاد شه و بره رو اون سلول وایسته
4- با فشردن کلید Delete اون سطر حذف بشه

توضیح اینکه بعضی از سلول های من محاسباتی هستن یعنی مثلا تو سلول اول طرف کد مشتری رو میزنه و من تو سلول دوم از دیتابیس مشخصاتش رو میارم طبیعتا اینجا باید رو سلول سوم فوکوس شه

واقعا گیر کردم اگر کسی میتونه کمک کنه

کارایی رو که خودم صحیح خطا با سرچ تو اینترنت و ... کردم میزارم اگر کسی تونست راهنمایی کنه ، اگر نه هم که شاید تا اینجا که کار انجام دادم بدرد دوستان بخوره


private void GenrateDetailGrid()
{
//set grid for Handy Enter (unbound)
grdBuyDetail.BoundMode = BoundMode.Unbound;
grdBuyDetail.CellSelectionMode = CellSelectionMode.SingleCell;




//Add Row#
grdBuyDetail.RowHeaders = InheritableBoolean.True;
grdBuyDetail.RowHeaderContent = RowHeaderContent.RowIndex;


//Create Root Table for unbounded Mode
GridEXTable gridTable = new GridEXTable();
grdBuyDetail.RootTable = gridTable;


//create Total Row
grdBuyDetail.TotalRow = Janus.Windows.GridEX.InheritableBoolean.True;
grdBuyDetail.TotalRowFormatStyle.Appearance = Janus.Windows.GridEX.Appearance.Flat;
grdBuyDetail.TotalRowFormatStyle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)) )), ((int)(((byte)(255)))), ((int)(((byte)(128)))));
grdBuyDetail.TotalRowFormatStyle.FontBold = Janus.Windows.GridEX.TriState.True;
grdBuyDetail.TotalRowFormatStyle.ForeColor = System.Drawing.Color.Black;
grdBuyDetail.TotalRowFormatStyle.LineAlignment = Janus.Windows.GridEX.TextAlignment.Center;
grdBuyDetail.TotalRowFormatStyle.TextAlignment = Janus.Windows.GridEX.TextAlignment.Center;
grdBuyDetail.TotalRowPosition = Janus.Windows.GridEX.TotalRowPosition.BottomFixed;


//Update Grid per Row
grdBuyDetail.UpdateMode = UpdateMode.RowUpdate;


//position of new row
grdBuyDetail.NewRowEnterKeyBehavior = NewRowEnterKeyBehavior.AddRowAndMoveToAddedRow;
grdBuyDetail.NewRowPosition = NewRowPosition.BottomRow;


//Select row as single
grdBuyDetail.SelectionMode = Janus.Windows.GridEX.SelectionMode.SingleSelection ;


//allow add and delete
//grdBuyDetail.AllowAddNew = InheritableBoolean.True;
//grdBuyDetail.AllowDelete = InheritableBoolean.True;


GridEXColumn column;
column = gridTable.Columns.Add("CustomerNo", ColumnType.Text);
column.DataTypeCode = TypeCode.String;
column.Caption = "کد فروشنده";
column.Key = "CustomerNo";


column = gridTable.Columns.Add("CustomerDesc", ColumnType.Text);
column.DataTypeCode = TypeCode.String;
column.Caption = "شرح فروشنده";
column.EditType = Janus.Windows.GridEX.EditType.NoEdit;
column.Key = "CustomerDesc";


column = gridTable.Columns.Add("SaleNo", ColumnType.Text);
column.DataTypeCode = TypeCode.String;
column.Caption = "شماره برگه خرید";
column.Key = "SaleNo";


column = gridTable.Columns.Add("TransferType", ColumnType.Text, EditType.DropDownList);
column.DataTypeCode = TypeCode.String;
column.Caption = "نوع حمل";
column.Key = "TransferType";
#region [Fill typeid 18-19]
string strsql = "select [TypeId],[TypeDesc] from Types where TypeID in (18,19)";
OleDbDataReader dr;
DataTable dt = new DataTable();
using (OleDbConnection cn = new OleDbConnection(mydb.CstrّOSM))
{
cn.Open();
using (OleDbCommand cmd = new OleDbCommand(strsql, cn))
{


using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))
{
da.Fill(dt);
column.HasValueList = true;


GridEXValueListItemCollection valuelist = column.ValueList;
dr = cmd.ExecuteReader();


if (dr.HasRows)
{
while (dr.Read())
valuelist.Add(new GridEXValueListItem(dr["TypeId"].ToString(), dr["TypeDesc"].ToString()));
}
dr.Close();
column.EditValueList = valuelist;
}
}
}
#endregion


column = gridTable.Columns.Add("OrderType", ColumnType.Text, EditType.DropDownList);
column.DataTypeCode = TypeCode.String;
column.Caption = "روش خرید";
column.Key = "OrderType";
#region [Fill typeid 1-2]
string strsql2 = "select [TypeId],[TypeDesc] from Types where TypeID in (1,2)";
OleDbDataReader dr2;
DataTable dt2 = new DataTable();
using (OleDbConnection cn2 = new OleDbConnection(mydb.CstrّOSM))
{
cn2.Open();
using (OleDbCommand cmd2 = new OleDbCommand(strsql2, cn2))
{


using (OleDbDataAdapter da2 = new OleDbDataAdapter(cmd2))
{
da2.Fill(dt);
column.HasValueList = true;


GridEXValueListItemCollection valuelist = column.ValueList;
dr2 = cmd2.ExecuteReader();


if (dr2.HasRows)
{
while (dr2.Read())
valuelist.Add(new GridEXValueListItem(dr2["TypeId"].ToString(), dr2["TypeDesc"].ToString()));
}
dr2.Close();
column.EditValueList = valuelist;
}
}
}
#endregion


column = gridTable.Columns.Add("Count", ColumnType.Text);
column.DataTypeCode = TypeCode.Double;
column.AggregateFunction = AggregateFunction.Sum;
column.Caption = "تعداد";
column.Key = "Count";


column = gridTable.Columns.Add("Weight", ColumnType.Text);
column.DataTypeCode = TypeCode.Double;
column.AggregateFunction = AggregateFunction.Sum;
column.Caption = "وزن باظرف";
column.Key = "Weight";




column = gridTable.Columns.Add("WeightWithoutDish", ColumnType.Text);
column.DataTypeCode = TypeCode.String;
column.EditType = Janus.Windows.GridEX.EditType.NoEdit;
column.Caption = "وزن بدون ظرف";
column.Key = "WeightWithoutDish";




column = gridTable.Columns.Add("Moisture", ColumnType.Text);
column.DataTypeCode = TypeCode.String;
column.Caption = "درصد افت رطوبت";
column.Key = "Moisture";




column = gridTable.Columns.Add("MoistureWeight", ColumnType.Text);
column.DataTypeCode = TypeCode.String;
column.EditType = Janus.Windows.GridEX.EditType.NoEdit;
column.AggregateFunction = AggregateFunction.Sum;
column.Caption = "وزن افت رطوبت";
column.Key = "MoistureWeight";




column = gridTable.Columns.Add("Material", ColumnType.Text);
column.DataTypeCode = TypeCode.String;


column.Caption = "درصد افت مواد";
column.Key = "Material";




column = gridTable.Columns.Add("MaterialWeight", ColumnType.Text);
column.DataTypeCode = TypeCode.String;
column.EditType = Janus.Windows.GridEX.EditType.NoEdit;
column.AggregateFunction = AggregateFunction.Sum;
column.Caption = "وزن افت مواد";
column.Key = "MaterialWeight";








column = gridTable.Columns.Add("NetWeight", ColumnType.Text);
column.DataTypeCode = TypeCode.Double;
column.EditType = Janus.Windows.GridEX.EditType.NoEdit;
column.AggregateFunction = AggregateFunction.Sum;
column.Caption = "وزن خالص";
column.Key = "NetWeight";








column = gridTable.Columns.Add("CalculatedAmount", ColumnType.Text);
column.DataTypeCode = TypeCode.Double;
column.EditType = Janus.Windows.GridEX.EditType.NoEdit;
column.AggregateFunction = AggregateFunction.Sum;
column.Caption = "مبلغ قابل محاسبه";
column.Key = "CalculatedAmount";








//column = gridTable.Columns.Add("ID", ColumnType.Text);
//column.DataTypeCode = TypeCode.Double;
//column.EditType = Janus.Windows.GridEX.EditType.NoEdit;
//column.AggregateFunction = AggregateFunction.Sum;
//column.Caption = "ID";
//column.Key = "ID";
//column.Visible = false;




grdBuyDetail.RetrieveStructure();




//وسط چین کردن متن ها
for (int i = 0; i < grdBuyDetail.RootTable.Columns.Count; i++)
{
grdBuyDetail.RootTable.Columns[i].HeaderAlignment = Janus.Windows.GridEX.TextAlignment.Center;
}




//حذف کلیه سطرهای خالی ایجاد شده
GridEXRow[] objGridRows = grdBuyDetail.GetDataRows();
if (objGridRows != null && objGridRows.Count() > 0)
{
foreach (GridEXRow objRow in objGridRows)
{
objRow.Delete();
}
}








grdBuyDetail.ColumnAutoResize = false;
grdBuyDetail.ColumnAutoSizeMode = ColumnAutoSizeMode.AllCellsAndHeader;
grdBuyDetail.Refetch();








//ساخت رنگ دلخواه برای سطرها
//متغیرها تعریف میشوندو در خطوط زیر تعریف میشوند و در ایونت لودینگ رو گرید استفاده میشوند
fBlue = new GridEXFormatStyle() { BackgroundGradientMode = BackgroundGradientMode.Solid, BackColor = Color.LightSkyBlue };
fPink = new GridEXFormatStyle() { BackgroundGradientMode = BackgroundGradientMode.Solid, BackColor = Color.LightPink };
fwhite = new GridEXFormatStyle() { BackgroundGradientMode = BackgroundGradientMode.Solid, BackColor = Color.AliceBlue };


}












private void grdBuyDetail_KeyDown(object sender, KeyEventArgs e)
{


#region [Press insert Key]
bool AllCellsFilled = false;




GridEXRow myrow;
if (e.KeyCode == Keys.Insert)
{
// this.grdBuyDetail.AllowAddNew = InheritableBoolean.True;
if (grdBuyDetail.Row == -3)
{
myrow = this.grdBuyDetail.AddItem();
//grdBuyDetail.GetRow(myrow).Cells[0]




if (grdBuyDetail.RowCount > 0)
{
grdBuyDetail.Row = grdBuyDetail.RowCount - 1;
}
}
else
{
foreach (var gridExRow in grdBuyDetail.GetRows())
{




for (int i = 1; i < gridExRow.Cells.Count; i++)
{




if (gridExRow.Cells[i].Value != "" && gridExRow.Cells[i].Value != null)
{
AllCellsFilled = true;
}
else
{




AllCellsFilled = false;
break;
}
}
}
}




if (AllCellsFilled == true)
{
myrow = this.grdBuyDetail.AddItem();




if (grdBuyDetail.RowCount > 0)
{
grdBuyDetail.Row = grdBuyDetail.RowCount - 1;
}




}
else
{




OSM_frmMessage.Show("لطفا تمامی ستونهای اطلاعاتی را تکمیل نمایید", MSGImageType.imgInfo);
return;
}
}












#endregion












#region [Press Enter Key]
if (e.KeyCode == Keys.Enter)
{
e.SuppressKeyPress = true;
SendKeys.Send("{TAB}");




int iRow = grdBuyDetail.CurrentRow.RowIndex;
int iCol = grdBuyDetail.CurrentColumn.Index;




// if not empty




switch (grdBuyDetail.CurrentColumn.Key)
{
case "CustomerNo":




FetchPersonName(Convert.ToString(grdBuyDetail.GetV alue("CustomerNo")));








break;
case "CustomerDesc":




break;
case "SaleNo":




break;
case "TransferType":




break;
case "OrderType":




break;
case "Count":




break;
case "Weight":




break;
case "WeightWithoutDish":




break;
case "Moisture":




break;
case "MoistureWeight":




break;
case "Material":




break;
case "MaterialWeight":




break;
case "TotalWeightLoss":




break;
case "NetWeight":




break;
case "CalculatedAmount":




break;
default:
break;
}




//GridEXRow item = grdBuyDetail.GetRow();








}




#endregion




#region [Press F3]
if (e.KeyCode == Keys.F3)
{




switch (grdBuyDetail.CurrentColumn.Key)
{
case "CustomerNo":
OSM_frmFindPersons objFrm = new OSM_frmFindPersons();
objFrm.ShowDialog();




if (ClassUtility.OSM_fillBack == "true")
{
grdBuyDetail.SetValue("CustomerNo", ClassUtility.OSM_CustomerLoopBack);
grdBuyDetail.SetValue("CustomerDesc", ClassUtility.OSM_CustomerLoopBackNF);




}
break;




case "SaleNo":
















OSM_NumericKeypad objFrmKeypad = new OSM_NumericKeypad();
objFrmKeypad.ShowDialog();




if (ClassUtility.returnFromKeypad != "nothing")
{
bool fnd = false;
for (int i = 1; i < grdBuyDetail.RowCount; i++)
{












if (grdBuyDetail.GetRow(i - 1).Cells[2].Text.ToString() == ClassUtility.returnFromKeypad)
{
fnd = true;
OSM_frmMessage.Show("این شماره برگه خرید در سطرهای قبلی استفاده شده است", MSGImageType.imgInfo);
grdBuyDetail.CurrentRow.Cells[2].Text = "";
break;
}
else
{




continue;
}
















}




if (fnd == false)
{
grdBuyDetail.SetValue("SaleNo", ClassUtility.returnFromKeypad);




}
}
break;


















case "MaterialWeight":
OSM_frmMessage.Show("امکان ویرایش این ستون وجود ندارد", MSGImageType.imgInfo);
break;




//case "TotalWeightLoss":
// OSM_frmMessage.Show("امکان ویرایش این ستون وجود ندارد",MSGImageType.imgInfo);
// break;




case "NetWeight":
OSM_frmMessage.Show("امکان ویرایش این ستون وجود ندارد", MSGImageType.imgInfo);
break;








case "CalculatedAmount":
OSM_frmMessage.Show("امکان ویرایش این ستون وجود ندارد", MSGImageType.imgInfo);
break;








default:
break;
}
}




#endregion




#region [Press Del key]
if (e.KeyCode == Keys.Delete)
{


GridEXSelectedItemCollection grdCollectionRow = grdBuyDetail.SelectedItems;
GridEXRow row=null;
foreach (GridEXSelectedItem selectedItem in grdCollectionRow)
{
if (selectedItem!=null)
{
string mystrID="";
row = selectedItem.GetRow();
if (!string.IsNullOrEmpty(row.Cells[2].Value.ToString()))
mystrID = row.Cells[2].Value.ToString();
//DeleteRecords(mystrID);
}else
{
GridEXRow item = grdBuyDetail.GetRow();




if (item != null && item.RowType == RowType.Record)
{
item.Delete();
}
else
{
OSM_frmMessage.Show("هیچ موردی برای حذف وچود ندارد", MSGImageType.imgInfo);
}
}
}
}
#endregion
}

tefos666
دوشنبه 15 تیر 1394, 00:29 صبح
برای رفتن به سلول بعدی تو همون سطر جاری یک راه حل ‍کشف کردم

لطفا باقی موارد رو کمک کنید

mygrid.col=2

عدد وارد شده شماره ستون است
البته برای سطر هم متعاقبا میشه از روش زیر استفاده کرد

mygrid.row=2
عدد وارد شده شماره سطر است