2012-01-11 68 views
0

我正在設計一個C#表單程序,它使用列表框來顯示來自SQL數據庫的搜索結果。搜索功能可以工作,但現在我希望能夠選擇其中一個列表框行並將所選數據(來自SQL數據庫)加載到新表單中。該計劃追蹤我們公司的客戶。當用戶鍵入某些條件時,列表框會被填充。我不熟悉SQL和C#表單設計,所以任何幫助都會很棒。我在列表框和搜索框下方留下了截圖。表單列表框和SQL數據庫

+0

「我在列表框和搜索框的下方留下了截圖。」不,你沒有。 – ean5533 2012-01-11 18:34:19

+0

什麼樣的形式? Silverlight的? – 2012-01-11 18:36:44

回答

0

帶你願意,你可以做到這一點(在後面的代碼)的項目:

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

一旦你的項目,你可以將它與一個事件或加載數據的方法。

0

你想調查的是你正在查看的各種控件的DataBinding屬性。

+0

哇,非常快速的答案,謝謝。該程序是一個Windows C#表單程序,我沒有使用銀光。同樣抱歉的截圖,我沒有足夠的帖子在這個網站上傳照片。我只有一些控件的DataBinding屬性的一些經驗,但不知道如何在這種情況下應用它。我有一個文本框和組合框,它允許用戶在SQL數據庫上進行搜索。搜索工作並在C#表單列表框中顯示結果。 – user1143831 2012-01-11 18:53:54

0

我有一個快速搜索一個多月ago.This是我code.I希望它能幫助你:

這是我的存儲過程的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 '%'[email protected]+'%' or 
LastName like '%'[email protected]+'%' or 
FatherName like '%'[email protected]+'%' or 
NationalCode like '%'[email protected]+'%' or 
ShenasnameCode like '%'[email protected]+'%' or 
BirthDate like '%'[email protected]+'%' or 
State like '%'[email protected]+'%' or 
City like '%'[email protected]+'%' or 
Address like '%'[email protected]+'%' or 
PostalCode like '%'[email protected]+'%' or 
SportType like '%'[email protected]+'%' or 
SportStyle like '%'[email protected]+'%' or 
RegisterType like '%'[email protected]+'%' or 
Ghahremani like '%'[email protected]+'%' 
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只是一個類的屬性。

要小心,這是我的代碼,當你需要使用它在你的項目

用於顯示在新的形式的數據,你可以保存從DB在列表框的標籤獲得了數據,你應該改變它,後得到新形式的構造函數中的數據,並在您使用它的新form.It是如此easy.To作出新的形式,你可以用列表框的選擇更改事件的工作是這樣的:

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); 
     } 
    } 

,你應該給列表框中的數據作爲一個列表框的項目,你應該重寫你的數據CALSS的的ToString()方法來顯示在ListBox中你需要的數據。