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

نام تاپیک: بایند مجدد Datagrid

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    شیراز
    پست
    97

    بایند مجدد Datagrid

    با سلام
    چجوری دیتاگرید رو بعد از انجام عملیات درج فرش کرد؟

  2. #2
    VIP آواتار مهدی فرزاد
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    اهواز
    سن
    43
    پست
    1,154

    نقل قول: بایند مجدد Datagrid

    سلام
    روش های مختلفی برای درج اطلاعات در دیتا گرید وجود داره که رفرش شدن دیتا گرید با توجه به روش کار شما میتونه متفاوت باشه ، بعضی روش ها اصلا نیازی به رفرش شدن نداره و خود بخود تغییر اطلاعات همزمان در دیتا گرید اعمال میشه ، شما از چه روشی استفاده کردید؟
    کدتون رو بنویسید یا یک نمونه فایل پیوست کنید

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    شیراز
    پست
    97

    نقل قول: بایند مجدد Datagrid

    ممنونم . من اطلاعاتم رو از طریق یک فرم فرزند میخام وارد گرید کنم از linq هم استفاده کردم

    <my:DataGrid Name="dataGrid1" AutoGenerateColumns="False" AlternatingRowBackground="#FFDFE8E8" ItemsSource="{Binding}"GridLinesVisibility="Horizontal"">

    <my:DataGrid.Columns>

    <my:DataGridTextColumn Header="ردیف" Binding="{Binding Path=ID}" IsReadOnly="True" Width="50"/>

    <my:DataGridTextColumn Header="نام" Binding="{Binding Path=Name}" IsReadOnly="True" Width="80"/>

    <my:DataGridTextColumn Header="نام خانوادگی" Binding="{Binding Path=Family}" IsReadOnly="True" Width="110"/>

    <my:DataGridTextColumn Header="نام پدر" Binding="{Binding Path=Father}" IsReadOnly="True" Width="70"/>

    <my:DataGridTextColumn Header="شماره پرونده" Binding="{Binding Path=Rid}" IsReadOnly="True" Width="90"/>

    <my:DataGridTextColumn Header="تاریخ تحویل" Binding="{Binding Path=SendDate}" IsReadOnly="True" Width="100"/>

    </my:DataGrid.Columns>

    </my:DataGrid>


    اینم کد گرید هست . در ضمن این گرید توی یک user conrtol هست که توی mainwindow داینامیکی لود میشه

  4. #4
    VIP آواتار مهدی فرزاد
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    اهواز
    سن
    43
    پست
    1,154

    نقل قول: بایند مجدد Datagrid

    سلام مجدد
    منظور من کدی هست که برای linq نوشتی و به چه شکل به گرید ارتباط میدی؟
    یکی از روش ها استفاده از ListColletionView هست که نیازی به رفرش نداره
    اگر روش استفاده رو نمیدونی بگو تا مثال بگذارم

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    شیراز
    پست
    97

    نقل قول: بایند مجدد Datagrid

    آهان ببخشید. من از همین روش معمول استفاده کردم
    این روشی رو که میگید نمیدونم

    var








    bimar = from bm in DH.tbl_wrokCircuits





    select bm;

    dataGrid1.ItemsSource = bimar;




  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    شیراز
    پست
    97

    نقل قول: بایند مجدد Datagrid

    یکی از روش ها استفاده از ListColletionView
    من یکم سرچ کردم ولی متوجه نشدم چجوری ربطش بدم به گرید؟!؟!؟!؟!؟!؟!؟!؟!!؟!؟!؟!؟

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    شیراز
    پست
    97

    نقل قول: بایند مجدد Datagrid

    آقای mehdi550u من هنوز منتظرم

  8. #8
    VIP آواتار مهدی فرزاد
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    اهواز
    سن
    43
    پست
    1,154

    نقل قول: بایند مجدد Datagrid

    سلام
    این یک نمونه که براتون درست کردم
    فایل های ضمیمه فایل های ضمیمه

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    شیراز
    پست
    97

    نقل قول: بایند مجدد Datagrid

    خییییلی ممنونم از لطفتون

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    شیراز
    پست
    97

    نقل قول: بایند مجدد Datagrid

    سلام

    میشه روش edit کردن باlistcollectionview رو هم توضیح بدید؟ listcollectionview یاIeditablelistcollectionview .
    من واسه ویرایش مشکل دارم. اکه بخام از طریق فرم فرزند این کارو بکنم refresh انجام نمیشه

  11. #11
    VIP آواتار مهدی فرزاد
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    اهواز
    سن
    43
    پست
    1,154

    نقل قول: بایند مجدد Datagrid

    سلام
    من یک توضیحاتی به همراه مثال به شما میدم

    من یک ChildWindow درست کردم که دوتا تکس باکس توش هست که کدش رو در زیر مینویسم

    <TextBox Height="23" HorizontalAlignment="Left" Margin="10,36,0,0" Name="txtName" VerticalAlignment="Top" Width="120" Text="{Binding Name, UpdateSourceTrigger=Explicit}"/>
    <TextBox Height="23" HorizontalAlignment="Left" Margin="157,36,0,0" Name="txtTel" VerticalAlignment="Top" Width="120" Text="{Binding Tel,UpdateSourceTrigger=Explicit}"/>


    اگر دقت کرده باشید این تکس باکس ها Bind شدن و در کد Binding اونها نوشته شده UpdateSourceTrigger=Explicit این به این علت هست که تا زمانی که ما فرمان ندادیم اطلاعات جدید جایگزین اطلاعات قدیم در سورسی که با این تکس باکس ها Bind شده نشود چرا؟ چون ممکنه شما اطلاعات رو تغییر بدید اما منصرف بشید و ثبت نکنید و فرم رو ببندید پس نباید تغییر در دیتاگرید پیدا بشه

    حالا
    توی همون فرم اولی که داشتیم من یک دکمه اضافه کردم که باعث نمایش ChildWindow به همراه اطلاعات رکورد انتخاب شده میشه
    private void btnNewWin_Click(object sender, RoutedEventArgs e)
    {
    if (this.dataGrid1.SelectedItems.Count == 1)
    {
    ChildWindow chWin = new ChildWindow { Owner = this, DataContext = this.dataGrid1.SelectedItem };
    chWin.ShowDialog();

    }
    }


    دقت کنید ما چک میکنیم که اگر یک رکورد انتخاب شده بود این عمل انجام بشه
    در کد بالا ما DataContext فرم CHild رو برابر this.dataGrid1.SelectedItem قرار دادیم این کار باعث میشه که اون Bindig که در فرم Child انجام داده بودیم اطلاعات این رکورد رو نشون بده و هر تغییر در اون TextBox ها باعث تغییر اطلاعات رکورد و همچنین باعث تغییر در شئی db که توی مثال قبل ساخته بودیم بشه (اما یادتون نره ما با تنظیم bindng در حالت UpdateSourceTrigger=Explicit باعث میشیم این تغییرات هر وقت ما بخواهیم اعمال بشه

    حالا

    توی Child Window یک Button برای ثبت گذاشتیم
    private void btnUpdate_Click(object sender, RoutedEventArgs e)
    {

    BindingExpression binex;
    binex = this.txtName.GetBindingExpression(TextBox.TextProp erty);
    binex.UpdateSource();

    binex = this.txtTel.GetBindingExpression(TextBox.TextPrope rty);
    binex.UpdateSource();

    (this.Owner as MainWindow).Update();
    MessageBox.Show("Update");


    }


    کد بالا چکار میکنه :
    BindingExpression binex;
    binex = this.txtName.GetBindingExpression(TextBox.TextProp erty);
    binex.UpdateSource();

    باعث میشه اون تغییری که دادیم در سورسی که به TextBox Name وصل هست اعمال بشه و در نتیجه در گرید و شئی db هم اعمال میشه
    تغییرات در دیتا گرید منعکس شده (نکته اگر UpdateSourceTrigger=Explicit رو نمیگذاشتید این تغییرات بدون فرمان ما هم منعکس میشد و به کد بالا نیاز نبود)

    حالا کد زیر
       (this.Owner as MainWindow).Update();

    متد update رو که در فرم اصلی ساختیم فراخونی میکنه که یک دستور ساده توش هست
      public void Update()
    {
    this.db.SubmitChanges();
    }


    تغییرات در دیتابیس ذخیره شد
    فایل های ضمیمه فایل های ضمیمه

  12. #12
    کاربر تازه وارد آواتار djnew2009
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    isfahan
    پست
    35

    نقل قول: بایند مجدد Datagrid

    نقل قول نوشته شده توسط Program.net مشاهده تاپیک
    آهان ببخشید. من از همین روش معمول استفاده کردم
    این روشی رو که میگید نمیدونم

    var








    bimar = from bm in DH.tbl_wrokCircuits





    select bm;

    dataGrid1.ItemsSource = bimar;



    شما فرق , IEnumrable IQueryable
    می دونی چیه؟؟؟؟؟
    dataGrid1.ItemsSource = bimar.ToList();


  13. #13
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    شیراز
    پست
    97

    نقل قول: بایند مجدد Datagrid

    فکر کنم بدونم IEnumarable داده قابل شمارش هستش و در ضمن وقتی اجرا میشه به دیتابیس ارجاع میکنه و دادهها رو در یافت میکنه
    ولی Iqueryable تا زمانی که متد Tolist() یا ..... اجرا نشه هیچ ارجاعی به دیتابیس انجام نمیشه درسته ؟!؟!؟!؟!؟!؟!؟

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

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