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

نام تاپیک: اضافه کردن ستون شماره ردیف به دیتاگرید

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    Question اضافه کردن ستون شماره ردیف به دیتاگرید

    سلام وقت بخیر
    شاید عنوان تاپیک بنظر تکراری بیاد اما در WPF من کلی جستجو کردم ولی دراین باره یک سری مشکلاتی هستم که ممنون میشوم درصورت امکان راهنمایی کنید.

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

    در ویندوز فرم نحوه انجام اینکار خیلی راحت هست و از DataGridViewCellFormattingEventArgs میتوانیم کمک بگیریم و به این شکل در ستون موردنظر شماره ردیف خودکار را ایجاد کنیم :

     private void dataGridView_details_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)        {
    dataGridView_details.Rows[e.RowIndex].Cells["radif"].Value = e.RowIndex + 1;
    }


    اما در WPF من با جستجو به 2 راه رسیدم اما در هردو آنها مشکلاتی وجود دارد.

    روش اول به کمک کلاس کانورتر :

    کد های XAML :
        <Window.Resources>        <local:ConvertItemToIndex x:Key="IndexConverter"/>
    </Window.Resources>
    <Grid>


    <DataGrid>

    <DataGrid.RowHeaderStyle>
    <Style TargetType="{x:Type DataGridRowHeader}">
    <Setter Property="Content" Value="{Binding Converter={StaticResource IndexConverter}}"/>
    <Setter Property="Width" Value="30"/>
    </Style>
    </DataGrid.RowHeaderStyle>

    <DataGrid.Columns> </DataGrid.Columns>


    </DataGrid>

    و کلاس :
      public class ConvertItemToIndex : IValueConverter    {


    private static int checkNumber;


    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
    try
    {
    return ++checkNumber;


    }
    catch (Exception e)
    {
    throw new NotImplementedException(e.Message);
    }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
    throw new NotImplementedException();
    }
    }


    مشکلی که این روش گفته شده دارد این هست که اولین بار که برنامه اجرا میشود مطابق تصویر زیر شماره ردیف بصورت خودکار ایجاد میشود :
    اما اگر بین ردیف ها اسکرول کنیم کل این شماره ردیف ها به هم میریزه !!

    من ارتباطی بین این مشکل و کلاس مربوطه نتونستم پیداکنم تا مشکل را حل کنم .

    روش دوم به کمک LoadingRow: این روش بدرستی کار میکنه و در اسکرول کردن هم مشکل نداره اما ایا میشود بجای اینکه این شماره گذاری در HEADER انجام بشه بیاییم در یک ستون موردنظر اینکارو انجام بدیم؟
     <Grid LoadingRow="DataGrid_LoadingRow" >

    <DataGrid>

    <DataGrid.RowHeaderStyle>
    <Style TargetType="{x:Type DataGridRowHeader}">
    <Setter Property="Width" Value="30"/>
    </Style>
    </DataGrid.RowHeaderStyle>

    <DataGrid.Columns> </DataGrid.Columns>


    </DataGrid>




    و
     void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)        {
    e.Row.Header = (e.Row.GetIndex()+1).ToString();
    }



    در هرحال من هدفم این هست که یک ستون ایجاد کنم و شماره ردیف بصورت خودکار داخلش نمایش داده شود.
    آخرین ویرایش به وسیله samiasoft : شنبه 22 بهمن 1401 در 21:24 عصر

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

  1. پاسخ: 1
    آخرین پست: یک شنبه 24 اسفند 1393, 10:33 صبح
  2. انتساب یک ستون از دیتا ست به یک ستون در دیتا تیبل؟
    نوشته شده توسط nimaaamin در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 17 فروردین 1392, 14:20 عصر
  3. پاسخ: 1
    آخرین پست: جمعه 18 اسفند 1391, 02:38 صبح
  4. سوال: نمایش یکستون از دیتابیس در چند ستون دیتا گرید ویو
    نوشته شده توسط mahtab.kamali در بخش C#‎‎
    پاسخ: 18
    آخرین پست: دوشنبه 16 بهمن 1391, 23:58 عصر
  5. حرفه ای: ریختن اطلاعات یک ستون از دیتاست به یک ستون از دیتاگرید ویو
    نوشته شده توسط mahdikoochooloo در بخش C#‎‎
    پاسخ: 6
    آخرین پست: یک شنبه 23 مرداد 1390, 02:32 صبح

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

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