الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اختصار اسطر من datatable من خلال مقارنة خلايا من datarows

بدأه Mazen.Is في 7 يناير 2011 · 0 رد · 257 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

لدي datatable عن نتائج مسير طريقي

يحتوي اسم الشارع ويحوي مسافة مسير ويحوي توجيه متمثل بكتابة نصية ( للأمام، للخلف ، .... )

أريد افرز الجدول بحيث الغي التكرار عند مفارق الطرق يعني اذا كان التنبيه التالي هو للأمام (يعني نحنا على مفترق طرق والتوجيه عم بيطالب بمتابعة الطريق نفسه )

بهذه الحالة أريد أن أجمع المسافة مع المسافة السابقة واحذف السطر الثاني

وهنا تابع لانشاء ال datatable الاساسي مع ( تعبئته بالقيم وهذا ما مكان عملنا ... )

مع اظهار الجدول من خلال DataGrid


DataTable maindataTable = new DataTable();
DataTable SecdataTable = new DataTable();
//***********************************************************************************************************

private void ShowTurnByTurnDirections(Collection<RouteSegment> roads, Collection<Feature> features)
{

maindataTable.Locale = CultureInfo.InvariantCulture;

maindataTable.Columns.Add("RoadName");
maindataTable.Columns.Add("Direction");
maindataTable.Columns.Add("Length(Meter)", typeof(object));


for (int i = 0; i < roads.Count; i++)
{
DataRow dataRow = maindataTable.NewRow();
dataRow["RoadName"] = features.ColumnValues["FENAME"];
dataRow["Direction"] = roads.DrivingDirection;
dataRow["Length(Meter)"] = Math.Round(((LineBaseShape)features.GetShape()).GetLength(GeographyUnit.DecimalDegree, DistanceUnit.Meter), 2);
maindataTable.Rows.Add(dataRow);
}
dgridDirections.DataSource = maindataTable;
}

وتابع فيه محاولاتي عند ضغط زر الفلترة



public void btnFilter_Click(object sender, EventArgs e)
{
SecdataTable.Locale = CultureInfo.InvariantCulture;

//SecdataTable.Columns.Add("RoadName");
//SecdataTable.Columns.Add("Direction");
//SecdataTable.Columns.Add("Length(Meter)");

if (maindataTable.Rows.Count > 1)
{

SecdataTable = maindataTable.Copy();
DataColumn[] SecDColume = new DataColumn[SecdataTable.Columns.Count];
DataRow[] SecDRows = new DataRow[SecdataTable.Rows.Count];
//for (int i = 1; i < SecdataTable.Rows.Count; i++)
//{
// for (int j = 1; i < SecdataTable.Columns.Count; i++)
// {
// if (SecDRows[SecDColume] = "Forword" && SecDRows + 1[SecDColume] = "Forword")
// {

// }
// }

//}


//DataRow[] SecDRows = new DataRow[SecdataTable.Rows.Count];
//DataColumn[] SecDColum = new DataColumn[SecdataTable.Rows.Count];
//for (int i = 1; i < maindataTable.Rows.Count; i++)
//{
// string[] x;
// string[] y;
// double[] z;

// SecDColum[2] = z;
// z = SecDColum;
//if (Y['1'] =="")
//{ }
//else
//{ }
//}
//dataRow["RoadName"] = features.ColumnValues["FENAME"];
//dataRow["Direction"] = roads.DrivingDirection;
//dataRow["Length(Meter)"] = Math.Round(((LineBaseShape)features.GetShape()).GetLength(GeographyUnit.DecimalDegree, DistanceUnit.Meter), 2);
//maindataTable.Rows.Add(dataRow);

// maindataTable.Rows.CopyTo(MainDRows, 0);
// DataRow[] SecDRows = new DataRow[maindataTable.Rows.Count];
// MainDRows.CopyTo(SecDRows, 0);

// {

// SecdataTable.Rows.Add(SecDRows);

//}
dgridDirections.DataSource = SecdataTable;
}
else
MessageBox.Show("No Data to filter!");
}

}

* يوجد طريقة للتعامل مع ال DataRow حاولت اعطاء index لخلايا ال DataRow ولكن لم تنجح!!....

أرجو منكم الرد بالسرعة الممكنة كوني مضطر على هذه الفكرة في مشروع جامعي

وشكرا

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…