خطا در انتقال GridControl Devexpress در انتقال داده گربد به DataTable
سلام و درود به دوستان خوبم.
من میخوام مقدار سطرهای گرید خودمو که با کامپوننت Devexpress طراحی کردم بریزم به داخل DataTable.
چند نکته وجود داره که باید بگم :
1- گرید من 5 ستون داره
2- ستون اول که برای ذخیره کد جدولی هست Visible=false
3- برای اولین بار میخوام ذخیره کنم مقدار string.Empty برای ستون کد میفرستم و داخل SQL Serever بهش مقدار داده میشه.
4- مشکل بزرگ که پیغام خطا معروف Object reference not set to an instance of an object میاد که همه میدونن برای چیه ولی همین منو گیج کرده.
5- من تو تریس که میزارم مثلا اگه 4 سطر به گرید اضافه کنم حلقه for من تا 3 مرحله اول درست کار می کنه ولی تو مرحله آخر رو خط اول انتقال داده پیغام خطا بالا رو میده.
6- من تو MessageBox تعداد سطر رو نشون دادم میزنه 4 بعد مرحله 4 پیغام خطا میده.
7- حلقه خودم رو منهای 1 کردم اون 3سطر به درستی ذخیره میشه.
فعلا همین نکات که به ذهنم رسیده
کد هم به شرح زیره :
blCls._Kind = 3;
for (int i = 0; i < gridViewCarName.RowCount ; i++)
{
if (gridViewCarName.RowCount > 0)
{
dt3.Rows.Add();
dt3.Rows[i]["CodeCarList"] = gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["CodeCarList"]);
dt3.Rows[i]["CarName"] = gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["CarName"]);
string strCarType = gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["CarType"]).ToString();
if (strCarType == "سبک")
dt3.Rows[i]["CarType"] = 1;
else if (strCarType == "سنگین")
dt3.Rows[i]["CarType"] = 2;
else if (strCarType == "ساختمانی")
dt3.Rows[i]["CarType"] = 3;
dt3.Rows[i]["CarGroup"] = gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["CarGroup"]);
dt3.Rows[i]["Manufacturer"] = gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["Manufacturer"]);
}
}
blCls._CarList = dt3;
str = blCls.dalAddList();
نقل قول: خطا در انتقال GridControl Devexpress در انتقال داده گربد به DataTable
سلام دوستان
کسی اگه نظری به ما هم بکنید من ممنون میشم.
نقل قول: خطا در انتقال GridControl Devexpress در انتقال داده گربد به DataTable
DataTable tbl = new DataTable();
DataRow Drow;
for (int i = 0; i < gridViewCarName.RowCount; i++)
{
Drow = tbl.NewRow();
Drow["CarName"] = ((DataRowView)gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["CarName"]).ToString();
tbl.Rows.Add(Drow);
}
نقل قول: خطا در انتقال GridControl Devexpress در انتقال داده گربد به DataTable
سلام داداش علی.
این کد هم جای گذاری کردم دقیقا همون مشکل قبل رو داره دقیقا حلقه برای بار آخر که وارد میشه به اولین خط انتقال
نقل قول:
Drow["CarName"] = ((DataRowView)gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["CarName"]).ToString();
که میرسه دوباره پیغام خطا Object reference not set to an instance of an object رو میده نمیدونم چرا برای مراحل اول نمیده در صورتی که همه اینها 0 هستند.
نقل قول: خطا در انتقال GridControl Devexpress در انتقال داده گربد به DataTable
با کنترل Grid شرکت DevExpress کار نکردم ولی گویا مشکل وهله سازی هست ممکنه دسترسی به ردیفهای گراید با GetRowCellValue اشتباه باشه
روش ارسال اطلاعات از دیتاگراید به دیتاتیبل با حلقه بدین روش صحیح هست و مشکلی نداره میتونید با یک دیتاگراید استاندارد ویندوز امتحان کنید
نقل قول: خطا در انتقال GridControl Devexpress در انتقال داده گربد به DataTable
سلام
فکر کنم باید به شکل زیر بنویسید :
for (int i = 0; i < gridViewCarName.RowCount-1 ; i++)
نقل قول: خطا در انتقال GridControl Devexpress در انتقال داده گربد به DataTable
نقل قول:
نوشته شده توسط
aslan
سلام
فکر کنم باید به شکل زیر بنویسید :
for (int i = 0; i < gridViewCarName.RowCount-1 ; i++)
سلام مهندس جان
من بالا هم گفتم منهای 1 می کنم درست کار می کنه فقط مشکلی که داره اون وقت سطر آخر گرید رو تو Datatable نمیریزه.
نقل قول: خطا در انتقال GridControl Devexpress در انتقال داده گربد به DataTable
نقل قول:
نوشته شده توسط
ebrahim.rayatparvar
سلام و درود به دوستان خوبم.
من میخوام مقدار سطرهای گرید خودمو که با کامپوننت Devexpress طراحی کردم بریزم به داخل DataTable.
چند نکته وجود داره که باید بگم :
1- گرید من 5 ستون داره
2- ستون اول که برای ذخیره کد جدولی هست Visible=false
3- برای اولین بار میخوام ذخیره کنم مقدار string.Empty برای ستون کد میفرستم و داخل SQL Serever بهش مقدار داده میشه.
4- مشکل بزرگ که پیغام خطا معروف Object reference not set to an instance of an object میاد که همه میدونن برای چیه ولی همین منو گیج کرده.
5- من تو تریس که میزارم مثلا اگه 4 سطر به گرید اضافه کنم حلقه for من تا 3 مرحله اول درست کار می کنه ولی تو مرحله آخر رو خط اول انتقال داده پیغام خطا بالا رو میده.
6- من تو MessageBox تعداد سطر رو نشون دادم میزنه 4 بعد مرحله 4 پیغام خطا میده.
7- حلقه خودم رو منهای 1 کردم اون 3سطر به درستی ذخیره میشه.
فعلا همین نکات که به ذهنم رسیده
کد هم به شرح زیره :
blCls._Kind = 3;
for (int i = 0; i < gridViewCarName.RowCount ; i++)
{
if (gridViewCarName.RowCount > 0)
{
dt3.Rows.Add();
dt3.Rows[i]["CodeCarList"] = gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["CodeCarList"]);
dt3.Rows[i]["CarName"] = gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["CarName"]);
string strCarType = gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["CarType"]).ToString();
if (strCarType == "سبک")
dt3.Rows[i]["CarType"] = 1;
else if (strCarType == "سنگین")
dt3.Rows[i]["CarType"] = 2;
else if (strCarType == "ساختمانی")
dt3.Rows[i]["CarType"] = 3;
dt3.Rows[i]["CarGroup"] = gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["CarGroup"]);
dt3.Rows[i]["Manufacturer"] = gridViewCarName.GetRowCellValue(i, gridViewCarName.Columns["Manufacturer"]);
}
}
blCls._CarList = dt3;
str = blCls.dalAddList();
سلام
در کد بالا کد if داخل حلقه for بی معنی است ..
روش کار به این شکل باید باشد :
در داخل حلقه ابتدا باید یک datarow ایجاد کنید
DataRow dr = dt3.NewRow();
سپس ستونهای مورد نظر در گرید را خوانده و در DataRow ایجاد شده قرار میدین
در انتها DataRow ایجاد شده را به دیتاتیبل اضافه میکنید ....
شکل کلی دستورات شبیه کدهای زیر میتونه باشه :
foreach (GridViewRow row in gridViewCarName.Rows)
{
DataRow dr = dt3.NewRow();
dr["CodeCarList"] = row.Cells[1].Text; // شماره ستون مربوطه در گرید بجای 1 جایگزین شود
dr["CarName"] = row.Cells[2].Text; // ...
//...........
dt3.Rows.Add(dr);
}
موفق باشید
نقل قول: خطا در انتقال GridControl Devexpress در انتقال داده گربد به DataTable
سلام مهندس جان
من این کد رو هم زدم همون مشکل رو داشت برای رفع این مشکل از Bindingource استفاده کردم کارم درست شد نیاز به این همه کد هم نیست.