(31-07-19, 10:28 AM)asemshahen5 كتب : ضع هذا بالكلاس :الف شكر ليك استاذي الفالى
PHP كود :
public static void SaveColumnValueXT(DataGridView DGV_Employ, Int32 RowIndex, string TableName, string IDCol, Int32 IDColIndex, bool IdentityIncrement)
{
if (RowIndex < 0)
{
return;
}
ArrayList ArrCol = new ArrayList();
ArrCol = FillArrayList(TableName);
//if (DGV_Employ.Rows[RowIndex].Cells[IDColIndex].Value != null)
//{
DataGridViewRow dgvRow = DGV_Employ.Rows[RowIndex];
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandType = CommandType.Text;
string SqlStr = string.Empty;
string SqlPar = string.Empty;
if (DGV_Employ.Rows[RowIndex].Cells[IDColIndex].Value.ToString() == string.Empty || RowIndex == DGV_Employ.Rows.Count - 2)//Insert
{
SqlStr = "INSERT INTO " + TableName + "(";
for (int i = 0; i < ArrCol.Count; i++)
{
if (i == ArrCol.Count - 1)
{
if (IdentityIncrement == true)
{
if (IDCol == ArrCol[i].ToString())
{
continue;
}
}
SqlStr += ArrCol[i].ToString() + ")VALUES(";
SqlPar += "@" + ArrCol[i].ToString() + ")";
}
else
{
if (IdentityIncrement == true)
{
if (IDCol == ArrCol[i].ToString())
{
continue;
}
}
SqlStr += ArrCol[i].ToString() + ",";
SqlPar += "@" + ArrCol[i].ToString() + ",";
}
}
SqlStr += SqlPar;
sqlCmd = new SqlCommand(SqlStr, Con);
}
else //update
{
SqlStr = "UPDATE " + TableName + " SET ";
for (int i = 0; i < ArrCol.Count; i++)
{
if (i == ArrCol.Count - 1)
{
if (IDCol == ArrCol[i].ToString())
{
continue;
}
SqlStr += ArrCol[i].ToString() + "=@" + ArrCol[i].ToString();
}
else
{
if (IDCol == ArrCol[i].ToString())
{
continue;
}
SqlStr += ArrCol[i].ToString() + "=@" + ArrCol[i].ToString() + ",";
}
}
SqlStr += " WHERE " + IDCol + "=@" + IDCol + "" + "";
sqlCmd = new SqlCommand(SqlStr, Con);
}
for (int i = 0; i < ArrCol.Count; i++)
{
if (SqlStr.Contains("UPDATE"))
{
sqlCmd.Parameters.AddWithValue("@" + ArrCol[i].ToString(), DGV_Employ.Rows[RowIndex].Cells[i].Value == null ? "" : DGV_Employ.Rows[RowIndex].Cells[i].Value.ToString());
}
else if (SqlStr.Contains("INSERT"))
{
if (IdentityIncrement == true)
{
if (IDCol == ArrCol[i].ToString())
{
continue;
}
else
{
sqlCmd.Parameters.AddWithValue("@" + ArrCol[i].ToString(), DGV_Employ.Rows[RowIndex].Cells[i].Value.ToString());// == DBNull.Value ? "" : dgvRow.Cells[i].Value.ToString());
}
}
else
{
sqlCmd.Parameters.AddWithValue("@" + ArrCol[i].ToString(), DGV_Employ.Rows[RowIndex].Cells[i].Value.ToString());// == DBNull.Value ? "" : dgvRow.Cells[i].Value.ToString());
}
}
}
Con.Open();
sqlCmd.ExecuteNonQuery();
Con.Close();
FillDGV(DGV_Employ, "Select * From " + TableName);
}
private static ArrayList FillArrayList(string TableName)
{
DataTable DT = new DataTable();
ArrayList ColumnNameXT = new ArrayList();
ColumnNameXT.Clear();
DT = DB.ExecSelect("Select * From "+ TableName);
for (int i = 0; i < DT.Columns.Count; i++)
{
ColumnNameXT.Add(DT.Columns[i].ColumnName);
}
return ColumnNameXT;
}
و هذا كود استخدامه :
PHP كود :
private void DGV_Employ_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DB.SaveColumnValueXT(DGV_Employ, e.RowIndex, "Employ", "Emp_ID",0,true);
}
و اصلح كود التنظيف كالتالي :
PHP كود :
public static void CleanAllControl(Control ctrlParent, bool DGVCleanRow)
{
foreach (Control ctrl in ctrlParent.Controls)
{
if (ctrl.HasChildren == true)
{
CleanAllControl(ctrl, DGVCleanRow);
}
if (ctrl is System.Windows.Forms.TextBox)
{
ctrl.Text = "";
}
else if (ctrl is CheckBox)
{
//bool chk;
CheckBox chk = ctrlParent.Controls[ctrl.Name] as CheckBox;
chk.Checked = false;
}
else if (ctrl is System.Windows.Forms.ComboBox)
ctrl.Text = "";
else if (ctrl is DataGridView)
{
if (DGVCleanRow == true)
{
DataGridView Dgv = ctrlParent.Controls[ctrl.Name] as DataGridView;
Dgv.DataSource = null;
}
}
}
//return StrD;
}
PHP كود :
//true لتنظيف الجداول ايضا//false لا تنظف الجداول
DB.CleanAllControl(this, true);
كود الماكس عدلته لك في موضوع آخر .
نسيت إخبارك إحذف كل أزرار الحذف من الجداول ليعمل الكود على اي جدول .
بس لو ممكن تتعب شويه معايا وترفق الاكواد داخل الملف
اكون شاكر جدا لحضرتك لاننى حاولت افهم الكود مقدرتش لقلة خبرتى
وجزاك الله كل خير
