PDA

View Full Version : سوال: کنترل ایجاد ردیف جدید در گرید ویو ...



ostovarit
یک شنبه 17 مرداد 1389, 12:06 عصر
با سلام و خسته نباشید
میخواهم زمانی که کاربر ردیف اول گرید ویو رو کامل پر کرد اون وقت ردیف دوم ایجاد شود و قبل از آن ردیف جدیدی ایجاد نشود ... یعنی قبل از ایجاد ردیف جدید چک شود که ردیف قبلی کامل پر شده است یا نه اگر پر شده بود یک ردیف جدید به ما بدهد ؟؟؟

لطفا مرا راهنمایی فرمایید

با تشکر

behnam25214
یک شنبه 17 مرداد 1389, 15:47 عصر
سلام

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

ostovarit
دوشنبه 18 مرداد 1389, 00:28 صبح
سلام

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

سلام و خسته نباشید
مشکل من تو شرط هست میخوام یک شرط بگذارم که زمانی که کلیه سلول های ردیف پر شد یک ردیف جدید ایجاد کند...
( به صورت پیش فرض گرید ویو با پر کردن حتی یک سلول برای شما یک ردیف ایجاد میکند)

با تشکر

این کد منه (به دلم نمیشینه!) اگر بهینه تر میشه بفرمایید اینو تو dataGridViewSpesific1_CellEndEdit نوشتم :


for (int i = 0; i < dataGridViewSpesific1.ColumnCount; i++)
{
if (dataGridViewSpesific1[i, dataGridViewSpesific1.CurrentRow.Index].Value.ToString() != "")
{
dataGridViewSpesific1.AllowUserToAddRows = true;
}
}
for (int i = 0; i < dataGridViewSpesific1.ColumnCount; i++)
{
if (dataGridViewSpesific1[i, dataGridViewSpesific1.CurrentRow.Index].Value.ToString() == "")
{
dataGridViewSpesific1.AllowUserToAddRows = false;
}
}
برا اینکه برای دفعه اولم این حالت وجود داشته باشه اینم بهش اضافه میکنیم


private void dataGridViewSpesific1_UserAddedRow(object sender, DataGridViewRowEventArgs e)
{

for (int i = 0; i < dataGridViewSpesific1.ColumnCount; i++)
{
if (dataGridViewSpesific1[i, dataGridViewSpesific1.CurrentRow.Index].Value.ToString() == "")
{
dataGridViewSpesific1.AllowUserToAddRows = false;
}
}

C Sharp
دوشنبه 18 مرداد 1389, 08:03 صبح
پراپرتی AllowUserToAddRows رو False کن

- اگه دیتاگرید بایند نیست :


privatevoid dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex != dataGridView1.ColumnCount - 1 && e.RowIndex != dataGridView1.RowCount - 1)
return;
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
bool isFilled = true;
foreach (DataGridViewCell cell in row.Cells)
if (cell.Value == null)
{
isFilled = false;
break;
}
if (isFilled == true){
dataGridView1.Rows.Add();
dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex + 1].Cells[0];
}
}

توی لود فرم یه سطر به گرید اضافه کن

- اگه بایند هست :


privatevoid dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex != dataGridView1.ColumnCount - 1 && e.RowIndex != dataGridView1.RowCount - 1)
return;
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
bool isFilled = true;
foreach (DataGridViewCell cell in row.Cells)
if (cell.Value == null)
{
isFilled = false;
break;
}
if (isFilled == true){
bindingSource.AddNew();
dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex + 1].Cells[0];
}
}

ostovarit
دوشنبه 18 مرداد 1389, 09:43 صبح
پراپرتی AllowUserToAddRows رو False کن


با تشکر از کدی که گذاشتی
اما من باید موقع لود یک سطر داشته باشم که کاربر اونو پر کنه پس نمیتونم از ابتدا AllowUserToAddRows را False کنم ...

گرید بایند هست ... اون شرطی که گذاشتید اگر کاربر روی سلول اخر گرید بود اون وقت بیا یک ردیف اضافه کن عملی نیست ... چون من اتوماتیک سلول ها رو با پر کردن سلول اول پر میکنم و این شرط عملا مناسب نیست ... ( در شرایطی که الان من دارم)
با این حال از توجه و کمکتون ممنونم ...

حجتی نیا
دوشنبه 18 مرداد 1389, 11:06 صبح
گرید شما بایند هست ولی خودتون اطلاعات بهش میدید ؟؟
تو هر سطر با پرکردن سلول اول، بقیه سلول ها باید پر بشن یا همه سلول های یه سطر رو خودتون باید پرش کنین ؟؟
با جزئیات توضیح بدید ..

C Sharp
دوشنبه 18 مرداد 1389, 11:19 صبح
با تشکر از کدی که گذاشتی
اما من باید موقع لود یک سطر داشته باشم که کاربر اونو پر کنه پس نمیتونم از ابتدا AllowUserToAddRows را False کنم ...


توی لود فرم :


bindingSource.AddNew();



چون من اتوماتیک سلول ها رو با پر کردن سلول اول پر میکنم

اینجاشو نفهمیدم !

ostovarit
دوشنبه 18 مرداد 1389, 17:38 عصر
گرید شما بایند هست ولی خودتون اطلاعات بهش میدید ؟؟
تو هر سطر با پرکردن سلول اول، بقیه سلول ها باید پر بشن یا همه سلول های یه سطر رو خودتون باید پرش کنین ؟؟
با جزئیات توضیح بدید ..

گرید بایند شده ولی تیبل خالیه و کاربر با پر کردن گرید و کلیک روی ذخیره اطلاعات رو در تیبل قرار میده ...

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

میخوام اگر ردیف کامل پر نباشه به هر دلیلی سطر جدیدی ایجاد نشه و وقتی کلیه سلولها پر بود سطر جدید ایجاد بشه همین... یک کد منطقی که در هر شرایطی این استاندارد رو رعایت کنه ... کدی که خودم نوشتم دقیقا همین کار رو میکنه ولی در دو ایونت مختلف این قضیه رو مدیریت کردم میخواستم بدونم راه ساده تری هم وجود داره ؟؟؟