如何在datagrid行详细信息中显示部分文本?

时间:2012-02-07 04:57:51

标签: wpfdatagrid

我的数据库中有表,其中包含ID,NAME,CONTEXT字段。我在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 :(得分:0)

我在表格中再添加一列“简介”。

 <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 

            }


        }

我希望有人可能需要它。谢谢。