نمایش نتایج 1 تا 10 از 10

نام تاپیک: جستجو در ایتمهای لیست ویو

  1. #1
    کاربر دائمی آواتار dharmaa
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    هر جایی که آب باشه
    پست
    154

    جستجو در ایتمهای لیست ویو

    سلام بر دوستان.
    من یه لیست ویو دارم که بایند شده به دیتا تیبل .حالا میخام توی ایتمهای این لیست ویو دنبال کلمه ای بگردم.
    این کد نوشتم :
     foreach (ListViewItem item in lsvCountry.Items)
    {
    if (item.Content.Equals(txtSearch .Text ))
    {
    item.IsSelected = true;
    }
    else
    {
    item.IsSelected = false;
    }
    }

    ولی خطا میدهد:
    Unable to cast object of type 'System.Data.DataRowView' to type 'System.Windows.Controls.ListViewItem
    فکر میکنم چون لیست ویو رو با یه دیتا تیبل پر میکنم ایتمهای لیست ویو به عنوان یه دیتا رو در نظر گرفته شدن درسته؟
    کسی حاضره راهنمایی ام کنه؟

  2. #2

    نقل قول: جستجو در ایتمهای لیست ویو

    شما با ایتمهای درون لیست مثل Text همانهایی که در WinForm هستند رفتار می کنید. در حالی که UI در WPF خیلی پیچیده تر است. یک لیست ساده در WPF میتونه از چندین لایه تشکلیل شده باشه که تو در توی هم قرار دارند. خوب است از ابزارهایی مانند UI Spy استفاده کنید تا ببینید چه جنگلی پشت آیتم پنهان شده !!!

    در WPF و Silverlight باید نه در میان آیتم های درون UI بلکه در میان List هایی که به آن Bind شده اند به دنبال شی مورد نظر خودتون بگردید و سپس Index رو به ListBox برده و آیتم رو انتخاب کنید.

    داده هارو اول درون یک ObservableCollection بریزید و ListBox.ItemSource رو روی اون تنظیم کنید. حالا میتوانید با LINQ یا هر روش دیگری بین دادهها (در ObservableCollection) جستوج کنید. اندیس نتیجه را گرفته و با کمک آن آیتم مورد نظر در ListBox رو انتخاب کنید.

    (از همین تکنیک برای حذف کردن یا اضافه کردن یک آیتم از ListBox استفاده کنید. در حقیقت وقتی شما به یک ObservableCollection یک داده ای رو اضافه کنید ListBox که به آن Bindشده هم بروز میشود و آیتم جدید را نشان می دهد.و حذف هم همینطور!)

    کلا باید از ObservableCollection و اینترفیس INotifyPropertyChanged زیاد استفاده کنید تا در WPF راحت باشید !

  3. #3
    کاربر دائمی آواتار dharmaa
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    هر جایی که آب باشه
    پست
    154

    نقل قول: جستجو در ایتمهای لیست ویو

    ممنون که وقت گذاشتین و جواب دادین
    من اومدم از ObservableCollectionاستفاده کردم ولی لیست ویو رو پر نکرد .این کدشه:
      DataTable tbl = TblCountry.Select_tblCountry_All();
    ObservableCollection <Countrylist> tblCountry;
    tblCountry = new ObservableCollection<Countrylist>();
    foreach (DataRow row in tbl.Rows)
    {
    var obj = new Countrylist()
    {
    IdCountry = (int)row["fldIdCountry"],
    Country = (string)row["fldCountry"],
    CountryCode = (string)row["fldCountryCode"],
    Currancies = (string)row["fldCurrencies"]
    };
    tblCountry .Add(obj);
    }
    lsvCountry.ItemsSource = tblCountry;

    public class Countrylist
    {
    public int IdCountry { get; set; }
    public string Country { get; set; }
    public string CountryCode { get; set; }
    public string Currancies { get; set; }

    }

    کد xaml listview
     <ListView.View>
    <GridView>
    <GridViewColumn Header="ردیف" Width=" 60" DisplayMemberBinding="{Binding Path=Row}" />
    <GridViewColumn Header="کشور" Width=" 100" DisplayMemberBinding="{Binding Path=fldCountry}"/>
    <GridViewColumn Header="کد کشور" Width=" 100" DisplayMemberBinding="{Binding Path=fldCountryCode}"/>
    <GridViewColumn Header="واحد پول" Width="100" DisplayMemberBinding="{Binding Path=fldCurrencies}"/>
    <GridViewColumn Header="fldIdCountry" Width="0" DisplayMemberBinding="{Binding Path=fldIdCountry}"/>
    </GridView>
    </ListView.View>

    میشه بگین اشکال کار کجاست؟

  4. #4

    نقل قول: جستجو در ایتمهای لیست ویو

    نقل قول نوشته شده توسط hakim22 مشاهده تاپیک
    کلا باید از ObservableCollection و اینترفیس INotifyPropertyChanged زیاد استفاده کنید تا در WPF راحت باشید !
    این دوتارو چطوری میتونم یاد بگیرم ؟

    لینک آموزشی میشه بدید ؟

  5. #5
    کاربر دائمی آواتار aryasoft2872
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    بیرجند
    پست
    399

    نقل قول: جستجو در ایتمهای لیست ویو

    همنطوری که گفتن دوستمون توی سورس باید جستجو انجام بدید. توی حلقتون بایک cast آینم رو تبدیل به کلاسی که اطلاعات از اون جنسه بکنید و بعد هر کدوم از اطلاعات رو که می خواید بگیرید:
    if ((item as ContryList).Country.Equals(txtSearch .Text ))
    {
    item.IsSelected = true;
    }
    else
    {
    item.IsSelected = false;
    }

  6. #6

    نقل قول: جستجو در ایتمهای لیست ویو

    کد مربوط به
    lsvCountry.ItemsSource = tblCountry;

    رو درون قسمت Load فرم قرار بدید. در ضمن این خط کد باید قبل از foreach یا هر کد دیگری که ObservableCollection را پر میکند قرار داشته باشد.
    دقت کنید که ObservableCollection دو رویداد رو پاسخ میده ، اول اضافه شدن یک آیتم به Collection و دوم حذف شدن یک آیتم به Collection و هر وقت یکی از این دو رویداد اتفاق بیوفته UI که به آن Bind شده رو بروز میکنه در غیر این صورت هیچی !

    پس ما اول ItemSource رو تنظیم می کنیم و بعدا آن را پر می کنیم تا رویداد Add رو تشخیص بده و لیست رو پر کنه .
    (دقت کنید که ObservableCollection به تغییر یا Edit اشیای درونش حساس نیست مگر اینکه در تعریف کلاس شی از اینترفیس INotifyPropertyChange استفاده از کرده باشید)

  7. #7

    نقل قول: جستجو در ایتمهای لیست ویو

    این دوتارو چطوری میتونم یاد بگیرم ؟
    لینک آموزشی میشه بدید ؟
    بسیاری از دوستان در برنامه نویسی WPF آن را شبیه Win From کار می کنند. اما مدلهای بسیار جالب تری مثل MVVM هست که برنامه نویسی رو دگرگون میکنه. و دیگه کار اصلی وصل کردن قسمتهای مختلف کد است تا کد نویسی خطی !
    ObservableCollection چیز خاصی جز یک نوعی از Collection که به رویداد Add و Remove حساسه و این دوتا رو اعلام میکنه نیست. این یکی از خواص اشیای WPF است که اخباری که از ObservableCollection بدستشون میرسه رو فورا به UI منتقل می کنند.

    در مورد INotifyPropertyChanged هم باید بدانید که یک Interface با تنها یک متد است که اگر در کلاسی آن را بکار بگیرید بعدا میتواند به علاوه بر Add و Remove رویداد Edit رو هم به UI خبر بده

    مثلالهادر اینترنت فراوان است .

  8. #8
    کاربر دائمی آواتار dharmaa
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    هر جایی که آب باشه
    پست
    154

    نقل قول: جستجو در ایتمهای لیست ویو

    نقل قول نوشته شده توسط hakim22 مشاهده تاپیک
    کد مربوط به
    lsvCountry.ItemsSource = tblCountry;

    رو درون قسمت Load فرم قرار بدید. در ضمن این خط کد باید قبل از foreach یا هر کد دیگری که ObservableCollection را پر میکند قرار داشته باشد.
    این کار رو هم کردم ولی درست نشد . و هنوز لیست ویو رو پر نمیکنه

  9. #9
    کاربر دائمی آواتار aryasoft2872
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    بیرجند
    پست
    399

    نقل قول: جستجو در ایتمهای لیست ویو

    نقل قول نوشته شده توسط dharmaa مشاهده تاپیک
    این کار رو هم کردم ولی درست نشد . و هنوز لیست ویو رو پر نمیکنه
    توی زمان تعریف ListView:
    ItemSource={Binding}

  10. #10
    کاربر دائمی آواتار dharmaa
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    هر جایی که آب باشه
    پست
    154

    نقل قول: جستجو در ایتمهای لیست ویو

    نقل قول نوشته شده توسط aryasoft2872 مشاهده تاپیک
    همنطوری که گفتن دوستمون توی سورس باید جستجو انجام بدید. توی حلقتون بایک cast آینم رو تبدیل به کلاسی که اطلاعات از اون جنسه بکنید و بعد هر کدوم از اطلاعات رو که می خواید بگیرید:
    if ((item as ContryList).Country.Equals(txtSearch .Text ))
    {
    item.IsSelected = true;
    }
    else
    {
    item.IsSelected = false;
    }
    خب لیست ویو را با ObservableCollection پر کردم .برای سرچ در لیست ویو هم اومدم از کد بالا استفاده کردم همانطور که گفته بودین.
    البته یه دستور foreach بهش اضافه کردم ولی روی خصوصیت IsSelected خطامیده.
     foreach (Countrylist  item in lsvCountry.Items )
    {

    if ((item).Country.Equals(txtSearch.Text))
    {
    item.IsSelected = true;
    }
    else
    {
    item.IsSelected = false;
    }
    }

    اگر باز هم خواننده این کامنت و پاسخگویم باشید بسیار سپاسگذار خواهم بود.

تاپیک های مشابه

  1. یک سئوال در مورد لیست ویو
    نوشته شده توسط مهدی رحیم زاده در بخش C#‎‎
    پاسخ: 2
    آخرین پست: شنبه 10 آذر 1386, 17:02 عصر
  2. کد لیست ویو
    نوشته شده توسط morteza_261 در بخش VB.NET
    پاسخ: 3
    آخرین پست: جمعه 02 آذر 1386, 11:49 صبح
  3. حرکت به قسمتهای مختلف فرم با کلیک ایتمهای لیست باکس
    نوشته شده توسط newmefmef در بخش برنامه نویسی در Delphi
    پاسخ: 7
    آخرین پست: یک شنبه 01 بهمن 1385, 08:01 صبح
  4. پاسخ: 1
    آخرین پست: دوشنبه 06 آذر 1385, 16:11 عصر
  5. چند چک باکس در یک لیست ویو
    نوشته شده توسط rezaei manesh در بخش VB.NET
    پاسخ: 0
    آخرین پست: دوشنبه 14 فروردین 1385, 12:56 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •