PDA

View Full Version : مشکل در جستو دروت ایتمهای یک لیست باکس متصل به دیتا سورس



moferferi
چهارشنبه 12 فروردین 1388, 10:29 صبح
سلام.
من با کد زیر درون ایتمهای لیست باکس خود را سرچ میکنم

int min=int.parse(textbox1.text);


foreach (string str1 in listBox1.Items)
{
if (min <= int.Parse(str1))
{

MessageBox.Show("no");
break;

}
}

مشکل اینه که اگه ایتمهای لیست باکس را خودمون موقع طراحی بهش بدیم کد درست کار میکنه.
ولی اگه لیست باکس به وسیله یک دیتاسورس پر شده باشه پیغام
Unable to cast object of type 'System.Data.DataRowView' to type 'System.String'.
میده.
من لیست باکس را به این وروش پر میکنم.

listbox1.datasource=mydataview;

listbox1.displaymember="intpage";

میشه روش صحیح رو بگید.

notelo
چهارشنبه 12 فروردین 1388, 11:15 صبح
سلام

به نظر من ایتمهای لیست باکس زمانی که شما مقدار دهی می کنید از جنس string هستند ولی وقتی با datatable پر می شن از جنس DataRowView هستند.... error هم به همین خاطره...

moferferi
چهارشنبه 12 فروردین 1388, 12:02 عصر
خوب اینو منم میدونم ولی چطور میشه مشکل را حل کرد

raziee
چهارشنبه 12 فروردین 1388, 13:05 عصر
من یه برنامه ی مشابه داشتم. برای حل این جوری پیاده کردم.
یه TextBox قرار دادم که بتونه در اون جستجو کنه.یه ListBox که اطلاعات رو نمایش میداد.

یه تابع به نام Search


public void Search(ListBox lstFamily, ListBox lstName, string text)
{
SqlConnection myCon = new SqlConnection(connectionString);
myCon.Open();
string sql;
// Search Family
sql = "SELECT c_Family + ' , ' + c_Name AS Expr1 FROM Countact WHERE (c_Family LIKE N'%" + text + "%') ORDER BY c_Family + c_Name";
SqlCommand myCom = new SqlCommand(sql, myCon);
SqlDataReader myDR;
myDR = myCom.ExecuteReader();
lstFamily.Items.Clear();
while(myDR.Read())
lstFamily.Items.Add(myDR.GetValue(0).ToString());
myDR.Dispose();
myCom.Dispose();
//Search Name
sql = "SELECT c_Name FROM Countact WHERE (c_Family LIKE N'%" + text + "%')";
SqlCommand myComName = new SqlCommand(sql, myCon);
SqlDataReader myDRName;
myDRName = myComName.ExecuteReader();
lstName.Items.Clear();
while (myDRName.Read())
lstName.Items.Add(myDRName.GetValue(0).ToString()) ;
myDRName.Dispose();
myComName.Dispose();
myCon.Close();
myCon.Dispose();
}


برای TextBox:


private void txtFamily_TextChanged(object sender, EventArgs e)
{
myDataBase.Search(lstFamily, lstName, txtFamily.Text);
}


توضیح : این دوتا لیست باکس بود که اولی نام خانوادگی و دومی نام کوچک رو نمایش میداد.
امیدوارم بتونه کمکت کنه.

notelo
چهارشنبه 12 فروردین 1388, 13:09 عصر
از این قطعه کد استفاده کن


SqlCommand cmd = new SqlCommand("SELECT Destination FROM Trip", Common.GetConnection());
cmd.Connection.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
lstDestination.Items.Add(sdr[0].ToString());
}
sdr.Close();
cmd.Connection.Close();