表单列表框&;SQL数据库

本文关键字:SQL 数据库 amp 列表 表单 | 更新日期: 2023-09-27 18:19:58

我正在设计一个C#窗体程序,该程序使用列表框来显示SQL数据库中的搜索结果。搜索功能可以工作,但现在我希望能够选择列表框中的一行,并将所选数据(来自SQL数据库)加载到一个新表单中。该程序可以跟踪我们公司的客户。当用户键入某些条件时,会填充列表框。我是SQL和C#表单设计的新手,所以任何帮助都会很棒。我在下面留下了一张列表框和搜索框的截图。

表单列表框&;SQL数据库

要获得您想要的物品,您可以这样做(在代码后面):

    public void Test(object sender, EventArgs e)
    {
        ListBox list = (ListBox)sender;
        var item = list.SelectedItem;
    }

一旦有了项目,就可以将其与加载数据的事件或方法相关联。

您想要研究的是您正在查看的各种控件的DataBinding属性。

我几个月前进行了一次快速搜索。这是我的密码。我希望它能帮助你:

这是我在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);
        }
    }

而我的CCD_ 2只是一类性质。

小心这是我的代码,你应该更改它,因为你需要在你的项目中使用它

为了在新表单中显示数据,您可以将从DB获得的数据保存在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);
        }
    }

您应该将您的数据作为列表框的项提供给列表框,并且您应该重写Data calss的.ToString()方法以在列表框中显示所需的数据。