Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Номера строк в дата гриде, Как показать номера строк в дата гриде 
:(
    Опции темы
SeregaS
Дата 30.3.2009, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 28.3.2009

Репутация: нет
Всего: нет



Как сделать что бы в заголовке каждого ряда отображался его номер
желательно задать это в стиле/шаблоне 

PM MAIL   Вверх
Человек01
Дата 31.3.2009, 05:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 20.2.2009
Где: Абакан, респ. Хак асия, Россия

Репутация: 2
Всего: 2



SeregaS, смотря какой именно индекс требуется отобразить. 
Если номер строки в DataTable то можно так:
Код

<Window.Resources>
        <CollectionViewSource x:Key="collection"/>
        <loc:RowNumberConverter x:Key="converter"/>
    </Window.Resources>
    <Grid>
        <wpf:DataGrid DataContext="{StaticResource collection}" ItemsSource="{Binding}">
            <wpf:DataGrid.RowHeaderTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type wpf:DataGridRow}},
   Path=Item,Converter={StaticResource converter}}"></TextBlock>
                </DataTemplate>
            </wpf:DataGrid.RowHeaderTemplate>
        </wpf:DataGrid>
    </Grid>
</Window>

Код

public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            this.Loaded += new RoutedEventHandler(Window1_Loaded);
        }

        void Window1_Loaded(object sender, RoutedEventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("name");
            dt.Rows.Add(new object[] { "Александр" });
            dt.Rows.Add(new object[] { "Алекс" });
            dt.Rows.Add(new object[] { "Ал" });
            dt.Rows.Add(new object[] { "Саня" });
            dt.Rows.Add(new object[] { "Санёк" });
            dt.Rows.Add(new object[] { "Саша" });
            dt.Rows.Add(new object[] { "Шурик" });
            ((CollectionViewSource)this.Resources["collection"]).Source = dt.DefaultView;
        }
    }


    public class RowNumberConverter : IValueConverter
    {
        public object Convert(object value, Type targetType,
         object parameter, CultureInfo culture)
        {
            if (value != null && value.GetType() == typeof(DataRowView))            
                return "№"+((DataRowView)value).Row.Table.Rows.IndexOf(((DataRowView)value).Row);            
            return "ха";
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

Но это будет отображаться именно номер строки в DataTable
Пользуемся и говорим Человеку спасибо.  smile 

Если же надо конкретный номер строки DataGrid то тогда можно попробовать заменить
((DataRowView)value).Row.Table.Rows.IndexOf(((DataRowView)value).Row);
на
((DataRowView)value).DataView.Find("кого ищем"), но тут будут две проблемы первая перед использованием Find надо применить сортировку к нашей DataView(dt.DefaultView.Sort где нить в Loaded) и вторая одинаковые названия(хотя может и нет)

Еще у DataGridRow есть метод GetIndex(), можно как нить к нему подобраться.
Ну вот собственно такие мысли, надеюсь поможет...
 smile 





Это сообщение отредактировал(а) Человек01 - 31.3.2009, 06:00
PM MAIL ICQ   Вверх
SeregaS
Дата 1.4.2009, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 28.3.2009

Репутация: нет
Всего: нет



Спасибо, что то в этом роде и надо сделать
видел что то похожее на msdn форуме,  мне удавалось забиндить в неадер номера строк полученные из  SQL запроса ( numROW)
Но как бы хочется верить что существует простое и элегантное решении этой проблеммы .

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0865 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.