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

نام تاپیک: یک سوال در مورد عملیات find در دیتاگرید

  1. #1

    یک سوال در مورد عملیات find در دیتاگرید

    سوال من اینست که من اطلاعات یک جدول را در دیتاگرید ریخته ام وآنها را نشان داده ام حالا میخواهم بدانم اگر به دنبال یک کلمه یا واژه بخصوصی بگردم تا ببینم این واژه در کدام سطر وجود دارد چگونه میتوانم اینکارراانجام دهم . به طوری که در هر سطری که آن واژه وجود داشت آن سطر به صورت انتخاب شده یا high light باشد . حالا برنامه نویسی آن به چه صورتی است ؟ البته آن واژه ای که من به دنبال آن میگردم به صورتی است که در پایین فرم یک تکست باکس وجود دارد و واژه موردنظر را در آن نوشته و دکمه جستجو را میزنیم حالا باید در سطرها بگردد وآن سطرهایی که این واژه ها در آن هستند را به صورت انتخاب شده نشان دهد.

  2. #2
    کار زیباییست!
    میشه متدی ایجاد کرد که به دنبال کلمه ی مورد نظر در رکوردهای Grid بگرده و در صورتی که اون رو پیدا کرد، به شکل یک فرمت دلخواه نمایش بده.
    به عنوان مثال، در Firefox، اگر گزینه ی "Highlight all" رو انتخاب کنی، تمامی گزینه های مچ، با رنگ زرد، هایلایت خواهند شد.
    این متد می تونه در زمان بایند داده ها به ItemTemplate ساختار TemplateField فراخونی بشه.
    مشکلی که در اینجا وجود داره این هست که در یک رکورد ممکنه چندین کلمه ی مچ پیدا بشه و این کار رو کمی پیچیده می کنه!
    در این حالت میشه از دلیگیت MatchEvaluator استفاده کرد.

    متد ایجاد شده توسط تو شامل دو پارامتر خواهد بود. عبارت مورد جستجو و عبارتی که در آن جستجو می کنی.
    کلاس Regex نیز در متد سازنده ی خود پذیرای عبارت مورد جستجو خواهد بود.
    دلیگیت MatchEvaluator تنها در زمان استفاده از متد Replace کلاس Regex کاربرد خواهد داشت و با هر بار یافت شدن یک عبارت در رشته، فراخوانی می شود.
    توجه داشته باش که این فراخوانی به معنای اجرای هر باره ی متد نیست! متد Regex در زمان پیدا شدن یک عبارت در یک رشته، کلاسی از نوع Match را برگشت خواهد داد که شامل اطلاعات رشته ی یافت شده است؛ و این عمل جستجو تا زمان رسیدن به پایان رشته انجام می شود.

    کد توضیحات فوق:

    Protected Function Highlight(ByVal searchFor As String, ByVal SearchIn As String) As String
    Dim obj_Regex As New Regex(SearchFor)
    Return obj_Regex.Replace(SearchIn, New MatchEvaluator(myReplaceMethod))
    End Function


    همون طور که میبینی، در دلیگیت MatchEvaluator، نام متدی آورده شده است. این بدان معناست که هر گاه رشته ای یافت شد، دلیگیت MatchEvaluator، متد myReplaceMethod را فراخوانی خواهد کرد.
    این فراخوانی همراه با پاس دادن کلاس Match (که شامل اطلاعات رشته ی یافت شده است) به این متد خواهد بود.

    پیاده سازی متد myReplaceMethod

    Public Function myReplaceMethod(ByVal obj_Match As Match) As String
    Return "<span class='highlight'>" + obj_Match .Value + "</span>"
    End Function

    مقدار برگشتی متد myReplaceMethod، یک تگ span خواهد بود که عبارت یافت شده را در بر می گیرد. میبینی که به خاصیت class تگ span، مقداری نسبت داده شده که می تونی اون رو در فایل CSS تعریف کنی. در حقیقت، عمل فرمت دهی به عبارت یافت شده را تگ span انجام خواهد داد.

    نحوه ی استفاده از این تکنیک هم ساده ست!
    کافیه که در ItemTemplate ساختار TemplateField، متد Highlight رو به شکل زیر فراخونی کنی:

    <%# Highlight(myTextBoxValue, Eval("myField")) %>

    myTextBoxValue رو یک متغیر Protected یا Public در نظر بگیر که می تونی به شکل یک Property تعریفش کنی و مقدار TextBox رو در اون قرار بدی.

    موفق باشید.

  3. #3
    ممنون از راهنمایی تون . ولی من هنوز هم حرفه ای نشده ام تا کاملا متوجه توضیحات شما شوم . مرا بیشتر راهنمایی کنید.
    1)
     Protected Function Highlight(ByVal searchFor As String, ByVal SearchIn As String) As String
    Dim obj_Regex As New Regex(SearchFor)
    Return obj_Regex.Replace(SearchIn, New MatchEvaluator(myReplaceMethod))
    End Function
    حالا SearchIn را من چه باید بنویسم. من در داخل جمله ای خاص به دنبال آن نمیگردم بلکه در سطرهای دیتاگرید به دنبال آن میگردم .حالا به جای SearchIn چه باید بنویسم؟
    2)گفته بودید : میبینی که به خاصیت class تگ span، مقداری نسبت داده شده که می تونی اون رو در فایل CSS تعریف کنی. حالا چگونه در فایل CSS اینکارراانجام دهم. لطفاً مرابیشترراهنمایی کنید.

  4. #4
    توضیحات بیشتری لازم نیست.
    گفته ها به اندازه ی کافی گویا هستند.
    لقمه را آماده کردم! جویدن را خود بیاموز....

  5. #5
    با تشکر از آقای راد . من برنامه ام به زبان C#‎ است .ووقتی کدها را به آن تبدیل میکنم Match را نمیشناسد باید از چه using استفاده کنم؟؟ و در ضمن آیا باید در حلقه foreach تابع Function Highlight را صدا بزنم ؟؟ لطفاً راهنمایی کنید.

  6. #6
    کسی نیست مرا راهنمایی کند ؟؟
    کد آقای راد را به زبان سی شارپ (C#‎) میخواهم ؟؟؟

  7. #7
    من برنامه ام به زبان C#‎ است .ووقتی کدها را به آن تبدیل میکنم Match را نمیشناسد باید از چه using استفاده کنم؟؟
    اگر از منوی View گزینه ی Object Browser رو انتخاب کنی و به دنبال کلمه ی "Match" بگردی، نتایج جالبی(!) رو می بینی!
    آیا باید در حلقه foreach تابع Function Highlight را صدا بزنم ؟؟
    خیر!
    به این جمله دقت کن:
    دلیگیت MatchEvaluator تنها در زمان استفاده از متد Replace کلاس Regex کاربرد خواهد داشت و با هر بار یافت شدن یک عبارت در رشته، فراخوانی می شود.
    توجه داشته باش که این فراخوانی به معنای اجرای هر باره ی متد نیست! متد Regex در زمان پیدا شدن یک عبارت در یک رشته، کلاسی از نوع Match را برگشت خواهد داد که شامل اطلاعات رشته ی یافت شده است؛ و این عمل جستجو تا زمان رسیدن به پایان رشته انجام می شود.
    موفق باشید.

  8. #8
    یکم موختون را به کار بندازید آقای راد بیکار نیستها . خوب بشین کد رو بخون و تبدیل کن

  9. #9
    با تشکر از راهنمایی شما آقای راد. یک سوال دیگه هم داشتم اگر ناراحت نمیشوید؟؟!!
    من در دکمه find برنامه چه باید بنویسم؟؟ برای اینکه با کلیک بر دکمه find عملیات جستجو را شروع کند من

    Protected Function Highlight(ByVal searchFor As String, ByVal SearchIn As String) As String
    Dim obj_Regex As New Regex(SearchFor)
    Return obj_Regex.Replace(SearchIn, New MatchEvaluator(myReplaceMethod))
    End Function

    را در دکمه نوشتم ولی باید متغیر SearchIn را مقداری بدهم .این مقدار رامیخوام محتویات دیتاگرید باشه حالا چگونه به محتویات دیتاگرید دسترسی داشته باشم؟
    لطفاً مرا راهنمایی کنید. ممنون میشم.

  10. #10
    شما یک textbox بزار روی فرم و کنارش یک کلید جستجو بزار . حالا نوشته درون textbox رو توی دیتا بیش جستجو کن اگر بود گرید رو فیلتر شده نمایش بده . همین برای جستجو هم datareader در درجه اول برای جستجو در کد بوسیله Sql ‌یا dataview برای جستجو در خود دات نت رو پیشنهاد میکنم . dataview ‌خودش rowfilter داره ولی سرعتش از datareader برای وب که کمتره . حالا اگه توی کد جستجو گیر شدی بگو با کدوم میخواهی تا برات بزارم

  11. #11
    من در برنامه ام تابعها را به صورت زیر نوشتم .

    publicstring Highlight(string searchFor ,string SearchIn)
    {
    Regex obj_Regex =
    new Regex(searchFor);
    return obj_Regex.Replace(SearchIn, new MatchEvaluator(myReplaceMethod));
    }


    publicstring myReplaceMethod(Match obj_Match)
    {
    return "<span class='highlight'>" + obj_Match .Value + "</span>";
    }


    و برای پر کردن دیتاگرید ، درsql یک view ساختم و اطلاعات آنرا گرفته و توسط دستورات زیر آنرا به دیتاگرید بایند کردم.

    string str="select * from view1";
    DataSet ds=new DataSet();
    con.Open();
    SqlDataAdapter da=
    new SqlDataAdapter(str,con);
    da.Fill(ds,"tbl_kol");
    con.Close();
    DataGrid1.DataSource=ds.Tables["tbl_kol"];
    DataGrid1.DataBind();

    حالا میخوام بدونم در دکمه find چه باید بنویسم تا در گرید من همه اطلاعات آن view را نشان دهد ولی سطرهایی که متن موجود در textbox1 را دارند، آن سطرها را به صورت highlight نشان دهد؟؟؟
    البته در برنامه ام یک style sheet ایجاد کردم و در آن به صورت زیر نوشتم .

    .highlight
    {
    background-color:Blue;
    }

    که نمیدانم آیا این روش برای دادن استایل درست است یا نه ؟؟ لطفاً مرا راهنمایی کنید چه کنم ؟؟

  12. #12
    اگه کسی میدونه لطفاً مرا راهنمایی کنید!!

  13. #13
    من نمیدونم!! شاید راه من درست نیست یا اینکه راهنمایی هاتون را درست انجام ندادم؟؟
    ولی خواهشاً اگر راهم درست نیست یا کدهایم اشتباه است یا ... مرا راهنمایی کنید تا بتونم اشتباهاتم را برطرف و اینکار را تموم کنم.
    ممنون میشم راهنمایی کنید.

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

  1. چجوری بفهمم که متد find چیزی پیدا کرده یا نه؟
    نوشته شده توسط سیلوستر در بخش Classic ASP
    پاسخ: 13
    آخرین پست: جمعه 22 اردیبهشت 1385, 00:05 صبح
  2. find
    نوشته شده توسط meysam23 در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: دوشنبه 30 آبان 1384, 15:42 عصر
  3. رفع اشکال کد در رابطه با find
    نوشته شده توسط امیر تورانی در بخش VB.NET
    پاسخ: 2
    آخرین پست: دوشنبه 30 آبان 1384, 11:02 صبح
  4. روش استفاده از متد find در adodc.recourdset.find
    نوشته شده توسط i_naderpour در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 3
    آخرین پست: سه شنبه 24 شهریور 1383, 02:41 صبح
  5. مشکل متد Find در Ado
    نوشته شده توسط morteza_dehghan در بخش VB.NET
    پاسخ: 2
    آخرین پست: سه شنبه 08 مهر 1382, 22:48 عصر

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

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