Как показать часть текста в деталях строки сетки данных? - PullRequest
0 голосов
/ 07 февраля 2012

В моей базе данных есть таблица с полями ID, ИМЯ, КОНТЕКСТ.Я показываю результаты поиска в datagrid.Теперь я попытался сделать это

        <WpfToolkit:DataGrid.RowDetailsTemplate>
            <DataTemplate>
                **<StackPanel Orientation="Horizontal" Margin="5">
                        <StackPanel Orientation="Vertical" Margin="5">
                        <TextBlock Foreground="CadetBlue" FontSize="13" 
                            Width="Auto" TextWrapping="Wrap"
                            Text="{Binding Path=Context}"/>
                    </StackPanel>**
                </StackPanel>
            </DataTemplate>
        </WpfToolkit:DataGrid.RowDetailsTemplate>

Это дает весь текст, который не то, что я хочу.Если вы дадите мне несколько указаний, как это сделать, может быть какой-то код.Это будет оценено.Я хочу показать только ту часть текста, которая выделена этой строкой кода.

 private void Find_Click(object sender, RoutedEventArgs e)
        {


            DataSet ds = new DataSet();
             cmdSel = new SqlCommand();
             cmdSel.Connection = MainWindow.conn;

               cmdSel.CommandText = "select id,Name,Context from document where Contains([Context],'FormsOf (INFLECTIONAL, \"" + TextBoxSearch.Text + "\")')";

                     da = new SqlDataAdapter(cmdSel);
             da.Fill(ds, "MainSearchBinding");
             resWin.DataGrid1.DataContext = ds;

                   }

Например, вы ищете «аудио», и он показывает 10 слов перед + «аудио» + 10 словпосле аудиоСпасибо заранее.

1 Ответ

0 голосов
/ 10 февраля 2012

Я добавляю еще один столбец «Введение» в мою таблицу.

 <WpfToolkit:DataGrid.RowDetailsTemplate>

                <DataTemplate>
                <StackPanel Orientation="Horizontal" Margin="5">
                        <StackPanel Orientation="Vertical" Margin="5" >
                            <TextBlock Foreground="CadetBlue" FontSize="13" 
                            Width="Auto" TextWrapping="Wrap" 
                            Text="{Binding Path=Intro}"/>

                    </StackPanel>
                </StackPanel>
            </DataTemplate>
        </WpfToolkit:DataGrid.RowDetailsTemplate>

И написал этот код для щелчка мышью.

private void OnMouseClick(object sender, MouseButtonEventArgs e)
        {

            IList rows = DataGrid1.SelectedItems;
            DataRowView row = (DataRowView)DataGrid1.SelectedItems[0];
            int a = (int)row["ID"];
            string t = (string)row["Context"]; //getting all text from Context
            string srch1 = UCSearch.srch; // search box text

            if (t.IndexOf(srch1) != -1)
            {
                string retString = t.Substring(t.IndexOf(srch1), 100); //cutting from occured text and more 100 symbols

                row["Intro"] = retString; // setting to Intro Column 

            }


        }

Надеюсь, кому-то это может понадобиться.Спасибо.

...