Вот запрос, который вы можете использовать для поиска чего-либо в вашей базе данных в качестве результата поиска,
SELECT * FROM tbl_customer
WHERE CustomerName LIKE '%".$search."%'
OR Address LIKE '%".$search."%'
OR City LIKE '%".$search."%'
OR PostalCode LIKE '%".$search."%'
OR Country LIKE '%".$search."%'
Использование этого кода поможет вам легко искать несколько столбцов
Итак, я задал вопрос о том, как привязать любой XML-документ независимо от схемы к древовидному представлению следующим образом: 1. Свяжите XML-документ с WPF TreeView с помощью XML Provider и HierarchicalDataTemplate. 2. Отобразите все узлы XML-документа, включая те, которые имеют дочерние узлы, в следующем формате:
> Node1
Node1 Contents
>ChildNode1
ChildNode1 Contents
>ChildNode1'sChildNode
ChildNode1'sChildNode Contents
> Node2
Node2 Contents
Проблема заключалась в том, что мой TreeView привязывал каждое свойство имени XmlNode к TreeItem . В случае текстового XmlNode он привязывает #text к TreeItem, чего я не хотел.
Итак, через сообщение на форуме MSDN я получил ответ: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/cbdb2420-1403-436f-aa7f-b1e3b1acb398/
Таким образом, хитрость заключалась в использовании триггеров для установки значения на основе тип обнаруженного узла.
Предостережение заключается в том, что другие типы узлов будут игнорироваться, и документ XML может содержать разные элементы, поэтому это может не работать для каждого типа обнаруженного узла.
Вот XAML:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window1" Height="250" Width="450">
<Window.Resources>
<HierarchicalDataTemplate x:Key="NodeTemplate">
<TextBlock x:Name="text" Text="?" />
<HierarchicalDataTemplate.ItemsSource>
<Binding XPath="child::node()" />
</HierarchicalDataTemplate.ItemsSource>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Text">
<Setter TargetName="text" Property="Text" Value="{Binding Path=Value}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Element">
<Setter TargetName="text" Property="Text" Value="{Binding Path=Name}"></Setter>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
<XmlDataProvider x:Key="xmlDataProvider"></XmlDataProvider>
</Window.Resources>
<Grid >
<TreeView Name="treeView1"
Background="AliceBlue"
ItemsSource="{Binding Source={StaticResource xmlDataProvider}, XPath=*}"
ItemTemplate= "{StaticResource NodeTemplate}"/>
</Grid>
public Window1()
{
InitializeComponent();
XmlDataProvider dataProvider = this.FindResource("xmlDataProvider") as XmlDataProvider;
XmlDocument doc = new XmlDocument();
// Testdocument doc.LoadXml(
@"<root>
<child1>text1<child11>text11</child11>
</child1>
<child2>text2<child21>text21</child21>
<child22>text22</child22>
</child2>
</root>");
dataProvider.Document = doc;
}