عملی که DataView.FindRows انجام می دهد
با سلام
قطعه کد زیر تعداد سطرهای اضافه شده در dataView رو نشون می ده. مثلاً اگر در اثر عمل درج یک سطر اضافه شده باشه عدد یک رو بر می گردونه و اگر مثلاً دو تا سطر درج شده عدد دو رو نشون می ده.
کد:
DataRowView[] drv = dataView1.FindRows(new object[] {
textBox1.Text, textBox2.Text });
if(drv.Length>0)
{
MessageBox.Show(drv.Length.ToString());
}
چند راه دیگر برای پر کردن ArrayList -من گیج شدم
کد:
ArrayList MyArrayList_EmployeeID = new ArrayList();
System.Data.DataTable dt = new System.Data.DataTable();
dt = this.dbDS.Tables[0];
comboBox1.DataSource = this.dbDV.Table;
comboBox1.DisplayMember = "EmployeeID";
comboBox1.ValueMember = "EmployeeID";
foreach (System.Data.DataRow dtRow in dt.Rows)
{
MyArrayList_EmployeeID.Add(dtRow[1].ToString());
}
MyArrayList_EmployeeID.Sort();
comboBox2.DataSource = MyArrayList_EmployeeID;
comboBox2.DisplayMember = "TerritoryID";
با این هم می شه، ArrayList رو پر کرد:
کد:
foreach (System.Data.DataRowView dtView in dbDV) {
MyArrayList_EmployeeID.Add(dtView[1].ToString());
}
ولی وقتی داده ای از کمبو باکس انتخاب می شه، هیچ عکس العملی روی datagrid اتفاق نمی افته.
با این هم می شه، ArrayList رو پر کرد:
کد:
for (int i = 0; i < dbDS.Tables[0].Rows.Count;i++)
{
MyArrayList_EmployeeID.Add(dbDS.Tables[0].Rows[i][1]);
}
ولی باز هم همون نتیجه همیشگی!
comboBox_SelectionChangeCommitted
با سلام فراوان، به بلندای یافتن جواب
یک مورد فوق جالب:
وقتی رویداد comboBox_SelectedIndexChanged صدا زده می شود، یک اتفاق جالبی می افتد که در مورد comboBox_SelectionChangeCommitted صادق نیست.
رویداد comboBox_SelectionChangeCommitted صبر می کند تا کاربر مقداری را از کمبو باکس انتخاب کند. یعنی ساکت و بی آزار و اذیت است و تا وقتی که از او کاری نخواسته اید و پا روی دمش نگذاشته اید ، کاری به کار شما ندارد،
امـــــــــــــــــــــــ ـــــا
جناب comboBox_SelectedIndexChanged، اصولاً به هر کاری کار دارد و هنوز فرم بارگذاری نشده(load نشده) ، خود را فرا می خواند. مشکل از اینجا شروع می شود که قبل از بار گذاری فرم ، ما valuemember نداریم، پس به جای یک مقدار واقعی، مقدار رشته ای System.Data.DataRowView باز گردانده می شود.
پس معلوم شد که قبل از بار گذاری فرم ، ما اصلاً مقداری برای جستجو در تابع Find نداریم ،برای همین است که خطای زیر را صادر می کند:
کد:
Input string was not in a correct format
حالا راهش چیست که از این مهلکه خلاص شویم؟
یک راهش استفاده از رویداد comboBox_SelectionChangeCommitted است. تمام کدهای گفته شده در رویداد comboBox_SelectedIndexChanged را به درون رویداد comboBox_SelectionChangeCommitted منتقل کنید.
کد:
private void comboBox2_SelectionChangeCommitted(object sender, EventArgs e)
{
}
و اما راه دوم:
راهی نداریم مگر اینکه جلوی فراخوانی رویداد comboBox_SelectedIndexChanged را قبل از بارگذاری فرم بگیریم.
چگونه؟
فعلاً نمی دانم.
comboBox_SelectedIndexChanged
با سلام
یک عدد جواب برای مشکل comboBox_SelectedIndexChanged که در پست قبل مطرح کرده بودم یافتم. هنوز امتحانش نکردم ولی انگار جوابی رویایی است. به ترتیب سه خط کد زیر دقت کنید.
کد:
comboBox2.DisplayMember = "LastName";
comboBox2.ValueMember = "EmployeeID";
comboBox2.DataSource = dataView2.Table;
منبع:
کد:
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/1a242eb7-1471-4895-a486-2ab8a32f1589/
همون طور که مشکل من حل شد، امیدوارم مشکل دوستانم هم که بعداً این تاپیک رو مشاهده می کنند نیز حل شود.
در پناه حق