0

リストボックスを使用して SQL データベースからの検索結果を表示する C# フォーム プログラムを設計しています。検索機能は機能しますが、リストボックスの行の 1 つを選択し、選択したデータ (SQL データベースから) を新しいフォームにロードできるようにしたいと考えています。このプログラムは、当社のクライアントを追跡します。ユーザーがいくつかの基準を入力すると、リストボックスに値が入力されます。私は SQL と C# のフォーム設計に不慣れなので、どんな助けも素晴らしいでしょう。リストボックスと検索ボックスの下にスクリーンショットを残しました。

4

3 に答える 3

0

必要なアイテムを取得するには、これを行うことができます(コードビハインドで):

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

アイテムを取得したら、データをロードするイベントまたはメソッドに関連付けることができます。

于 2012-01-11T18:34:44.370 に答える
0

調査したいのは、見ているさまざまなコントロールの DataBinding プロパティです。

于 2012-01-11T18:34:50.877 に答える
0

何ヶ月も前に簡単に検索しました。これが私のコードです。お役に立てば幸いです。

これは、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);

        }
    }

myCommon.CommonPersonSerchResultは単なるプロパティのクラスでした。

注意してくださいそれは私のコードであり、プロジェクトで使用する必要があるため、変更する必要があります

新しいフォームでデータを表示するには、DB から取得したデータをリストボックスのタグに保存し、その後、新しいフォームのコンストラクターでデータを取得して、新しいフォームで操作できます。とても簡単です。新しいフォームを作成するには、次のことができます。次のように、リストボックスの選択された変更イベントを操作します。

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() メソッドをオーバーライドする必要があります。

于 2012-01-11T19:08:05.240 に答える