2015-12-22 93 views
0

我創建了一個存儲過程來選擇表的所有值。 但我想在C#應用程序,組合框只顯示值開始像love關鍵字。只顯示組合框的值,如「愛」?

例子:

love love 
love king 
love soft 

不顯示項目:

long time 
union all 

我的代碼:

public void HienThiLoaiBCao() 
{ 
    LovetoDAL cal = new LovetoDAL(); 
    string keyword = "BC"; 

    int i = cbxTenBaoCao.FindString(keyword); 
    if (i == -1) 
     return; 
    else 
    { 
     var dt = cal.Love_GetByTop("", "", "ID DESC"); 
     cbxTenBaoCao.DataSource = dt; 
     cbxTenBaoCao.DisplayMember = "lover"; 
     cbxTenBaoCao.ValueMember = "lover"; 
    } 
} 

public DataTable Love_GetByTop(string Top, string Where, string Order) 
{ 
    using (var cmd = new SqlCommand("sq_Love_GetByTop", GetConnection())) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     var da = new SqlDataAdapter(cmd); 
     cmd.Parameters.Add(new SqlParameter("@Top", Top)); 
     cmd.Parameters.Add(new SqlParameter("@Where", Where)); 
     cmd.Parameters.Add(new SqlParameter("@Order", Order)); 
     var dt = new DataTable(); 
     da.Fill(dt); 
     return dt; 
    } 
} 


USE [LEO] 
GO 

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[sq_Love_GetByTop] 
@Top nvarchar(10), 
@Where nvarchar(500), 
@Order nvarchar(500) 
AS 
    Declare @SQL as nvarchar(500) 
Select @SQL = 'SELECT top (' + @Top + ') * FROM [Love]' 
if len(@Top) = 0 
BEGIN 
Select @SQL = 'SELECT * FROM [Love]' 
END 
if len(@Where) >0 
BEGIN 
Select @SQL = @SQL + ' Where ' + @Where 
END 
if len(@Order) >0 
BEGIN 
Select @SQL = @SQL + ' Order by ' + @Order 
END 
EXEC (@SQL) 

感謝。

+0

你在Windows窗體或WPF編碼? – Alexei

回答

0

一種選擇是過濾掉與loveDataTable開始記錄。您可以直接在DataTable上使用Select方法,或者在表格的默認DataView上使用RowFilter屬性,然後將篩選結果綁定到組合框。

像這樣的東西與DataView -

DataView dv = dt.DefaultView; 
//Apply your filter on data view, for records starting with `love` 
dv.RowFilter = "lover like 'love*'"; 
//and bind you combo box with the data view 
cbxTenBaoCao.DataSource = dv; 

代碼的其餘的則不變。

更多關於過濾的結果集 -

http://www.csharp-examples.net/dataview-rowfilter/

https://msdn.microsoft.com/en-us/library/system.data.datatable.select%28v=vs.110%29.aspx

+0

謝謝。這對我很有幫助。 –

-1

我沒有試過這段代碼,這段時間很長,因爲我編寫了c#代碼。

//get the values from your stored procedure 
List<string> values = task.storedProcedures(); 
//remove items that doesn't start with "love" 
values = values.Where(item => item.someValues.StartsWith("love")) 

希望這有助於

+0

謝謝。我測試了你的代碼,但沒有在我的應用程序上運行 –