PDA

View Full Version : حرفه ای: ساخت دیتا گرید همه کاره



araz_pashazadeh
جمعه 20 آبان 1390, 17:48 عصر
با عرض سلام وخسته نباشید خدمت شما دوستان عزیز.
من می خواستم دیتا گریدی بسازم که که همه کارهای درج ، حذف،ویرایش را انجام بده.
البته تا حدودی موفق بودم و تونستم حذف را انجام بدم ولی درج ، ویرایش را نتونستم.
می خوام کاربر اطلاعات را داخل گرید وارد کنه و با زدن کلیدی اطلاعات ثبت ویا ویرایش بشه.
اگه دوستان در این زمینه من را راهنمایی کنن ممنون میشم.

araz_pashazadeh
سه شنبه 24 آبان 1390, 12:40 عصر
دوستان من کدی به این صورت برای حذف نوشتم مشکلی هم نداره ولی برای درج و ویرایش نتونستم کار خاصی بکنم:
private void dataGridViewBankAccount_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Delete)
{
BtnDel_Click(sender, e);
}
else if (e.KeyData == Keys.Up || e.KeyData == Keys.Down)
{
DataGridViewSelectedRowCollection RC = dataGridViewBankAccount.SelectedRows;
txtAccountID.Text = RC[0].Cells["AccountID"].Value.ToString();
txtBankName.Text = RC[0].Cells["BankName"].Value.ToString();
txtAccountNumber.Text = RC[0].Cells["AccountNumber"].Value.ToString();
txtCash.Text = RC[0].Cells["Cash"].Value.ToString();
txtCashAll.Text = RC[0].Cells["CashAll"].Value.ToString();
txtDescription.Text = RC[0].Cells["Description"].Value.ToString();

}
}
و برای قسمت درج از این چند تا رخداد به صورت زیر استفاده کردم:
private void dataGridViewBankAccount_RowEnter(object sender, DataGridViewCellEventArgs e)
{
try
{
if (NewRowNeeded)
{
DataGridViewRow RC = dataGridViewBankAccount.Rows[e.RowIndex];
if (RC.IsNewRow)
{
string Value = dataGridViewBankAccount.Rows[e.RowIndex - 1].Cells["BankName"].Value.ToString();
//Value = RC[0].Cells["BankName"].Value.ToString();
}
}
}
catch (NullReferenceException)
{
}
}
private bool _NewRowNeeded;

public bool NewRowNeeded
{
get { return _NewRowNeeded; }
set { _NewRowNeeded = value; }
}
private void dataGridViewBankAccount_NewRowNeeded(object sender, DataGridViewRowEventArgs e)
{
NewRowNeeded = true;
}

private void dataGridViewBankAccount_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
if (NewRowNeeded)
{
NewRowNeeded = false;
}
}

private void dataGridViewBankAccount_CellValuePushed(object sender, DataGridViewCellValueEventArgs e)
{

}
ولی به نتیجه نرسیدم لطفا راهنمایی کنین خیلی جستجو کردم ولی به نتیجه نرسیدم.

asadegha
سه شنبه 24 آبان 1390, 13:33 عصر
سلام دوست عزیز.
کد درجت کجا نوشته شده؟ تو چی درج می کنه؟ این درج و حذف و ویرایش فقط قراره رو datagrid باشه یا توی دیتابیس اعمال بشه؟

saeedhushmand
سه شنبه 24 آبان 1390, 13:52 عصر
وقتی به خوای اطلاعاتی که توی یک سطر از گرید وارد می کنی رو با زدن یک button وارد جدول دیتابیست کنی و ثبت کنی از کد زیر می تونی استفاده کنی


try
{
laberatorDataSet Changes =
(laberatorDataSet)laberatorDataSet.GetChanges();
if (Changes == null)
{
return;
}
DataTable dt = Changes.Tables["flez"];
DataRow[] badRows = dt.GetErrors();
if (badRows.Length == 0)
{
int frosh = docterTableAdapter.Update(Changes);
MessageBox.Show("عملیات با موفقیت انجام شد");
laberatorDataSet.AcceptChanges();
}
else
{
string errorMsg = null;
foreach (DataRow row in badRows)
{
foreach (DataColumn col in row.GetColumnsInError())
{
errorMsg += row.GetColumnError(col) + "\n";
}
}
MessageBox.Show("Errors in data: " + errorMsg,
"لطفا تصحیح کنید", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show("اشکال:" + ex.Message, "اشکال",
MessageBoxButtons.OK, MessageBoxIcon.Error);
laberatorDataSet.RejectChanges();
}

araz_pashazadeh
چهارشنبه 25 آبان 1390, 16:09 عصر
سلام دوست عزیز.
کد درجت کجا نوشته شده؟ تو چی درج می کنه؟ این درج و حذف و ویرایش فقط قراره رو datagrid باشه یا توی دیتابیس اعمال بشه؟
قبلا هم گفتم دوست عزیز من نتونستم این کا را انجام بدم فقط حذف را پیاده سازی کردم کد مربوط به اون را هم در پست قرار دادم.
من هیچ کلیدی در فرم ندارم کاربر می خوام در گرید اطلاعات خودشو وارد کنه و با زدن اینتر اطلاعات در پایگاه داده درج بشه و یا ویرایش بشه.

araz_pashazadeh
چهارشنبه 25 آبان 1390, 16:13 عصر
دوست عزیز من نمی خوام در فرم دکمه ای باشه فقط می خوام با زدن اینتر اطلاعات درج و یا ویرایش بشه همین.