У меня был быстрый поиск много месяцев назад. Это мой код. Надеюсь, он вам поможет:
Это полный код моей хранимой процедуры в SQL:
USE [Khane]
GO
/****** Object: StoredProcedure [dbo].[QuickSerch] Script Date: 01/11/2012 22:24:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[QuickSerch]
@item nvarchar(300)=null
AS
BEGIN
select * from PersonsDataTbl
where
Name like '%'+@item+'%' or
LastName like '%'+@item+'%' or
FatherName like '%'+@item+'%' or
NationalCode like '%'+@item+'%' or
ShenasnameCode like '%'+@item+'%' or
BirthDate like '%'+@item+'%' or
State like '%'+@item+'%' or
City like '%'+@item+'%' or
Address like '%'+@item+'%' or
PostalCode like '%'+@item+'%' or
SportType like '%'+@item+'%' or
SportStyle like '%'+@item+'%' or
RegisterType like '%'+@item+'%' or
Ghahremani like '%'+@item+'%'
END
если вы не знаете о хранимой процедуре, вы можете найти ее.
и это мой код C # для отправки данных в хранимую процедуру и получения данных из нее:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;
namespace DL
{
public class DLQuickSerch
{
List<Common.CommonPersonSerchResult> SerchResult = new List<Common.CommonPersonSerchResult>();
public DLQuickSerch(string Item)
{
SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=Khane;Integrated Security=True");
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "QuickSerch";
SqlParameter item = new SqlParameter("item", SqlDbType.NVarChar, 300);
item.Value = Item;
command.Parameters.Add(item);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Common.CommonPersonSerchResult res = new Common.CommonPersonSerchResult();
res.ID = (int)reader.GetValue(0);
res.FirstName = reader.GetValue(1).ToString();
res.LastName = reader.GetValue(2).ToString();
res.FatherName = reader.GetValue(3).ToString();
res.NationalCode = (int)reader.GetValue(4);
res.ShenasnameCode = (int)reader.GetValue(5);
res.BirthDate = reader.GetValue(6).ToString();
res.State = reader.GetValue(7).ToString();
res.City = reader.GetValue(8).ToString();
res.Address = reader.GetValue(9).ToString();
res.PostalCode = reader.GetValue(10).ToString();
res.SportType = reader.GetValue(11).ToString();
res.SportStyle = reader.GetValue(12).ToString();
res.RegisterType = reader.GetValue(13).ToString();
res.Ghahremani = reader.GetValue(14).ToString();
SerchResult.Add(res);
}
connection.Close();
}
public List<Common.CommonPersonSerchResult> GetQuickSerchResult()
{
return SerchResult;
}
}
}
и вы должны изменить SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=Khane;Integrated Security=True");
, используя данные вашей базы данных
и это мой код для отображения данных в ListView:
private void QuickSearch(string item)
{
DL.DLQuickSerch qc = new DL.DLQuickSerch(item);
List<Common.CommonPersonSerchResult> reslt = qc.GetQuickSerchResult();
FillListView(reslt);
}
private void FillListView(List<Common.CommonPersonSerchResult> list)
{
SerchResultList.Items.Clear();
foreach (Common.CommonPersonSerchResult c in list)
{
ListViewItem item = new ListViewItem();
item.Text = c.ID.ToString();
item.SubItems.Add(c.FirstName);
item.SubItems.Add(c.LastName);
item.SubItems.Add(c.FatherName);
item.SubItems.Add(c.NationalCode.ToString());
item.SubItems.Add(c.ShenasnameCode.ToString());
item.SubItems.Add(c.BirthDate);
item.SubItems.Add(c.State);
item.SubItems.Add(c.City);
item.SubItems.Add(c.PostalCode.ToString());
item.SubItems.Add(c.SportType);
item.SubItems.Add(c.SportStyle);
item.SubItems.Add(c.RegisterType);
item.SubItems.Add(c.Ghahremani);
item.Tag = c;
SerchResultList.Items.Add(item);
}
}
и мой Common.CommonPersonSerchResult
был просто классом свойств.
будьте осторожны Это был мой код, и вы должны изменить его, если вам нужно использовать его в вашем проекте
для отображения данных в новой форме вы можете сохранить данные, полученные из БД, в теге listbox, а затем получить данные в конструкторе новой формы и работать с ним в новой форме. Форма, в которой вы можете работать с выбранным событием изменения Listbox, например:
private void SerchResultList_SelectedIndexChanged(object sender, EventArgs e)
{
if (SerchResultList.SelectedItems.Count != 0)
{
Form2 = new Form2(SerchResultList.SelectedItems[0].Tag);
}
}
этот код был для ListView, и я думаю, что в ListBox есть только SelectedItem, и ваш метод будет таким:
private void SerchResultList_SelectedIndexChanged(object sender, EventArgs e)
{
if (SerchResultList.SelectedItem != null)
{
Form2 = new Form2(SerchResultList.SelectedItem);
}
}
и вы должны предоставить списку свои Данные как Элемент списка, и вы должны переопределить метод .ToString () для ваших данных, чтобы показать необходимые данные в ListBox.