これは基本的に検索ツールです。コンボボックスに何かを入力すると、コンボボックスがドロップダウンして候補が表示されます (Google 検索バーのようなもの)。
1 つのパラメーターを取り、いくつかの行を返す、いくつかの複雑な計算を行うプロシージャを作成しました。次に、コンボボックス イベント (On Update Text) を作成しました。
そして、イベント ハンドラで次のコードを書きました。
private void combobox_TextUpdate(object sender, EventArgs e)
{
this.combobox.Items.Clear();
DataTable List = new DataTable();
if (this.combobox.Text.Length > 0)
{
List = searchIt(combobox.text);
foreach (DataRow Row in List.Rows)
{
this.combobox.Items.Add(Row.ItemArray.GetValue(0).ToString());
}
this.combobox.DroppedDown = true;
}
}
static public DataTable searchIt(string STR)
{
string connectionString = McFarlaneIndustriesPOSnamespace.Properties.Settings.Default.McFarlane_IndustriesConnectionString;
SqlConnection con = new SqlConnection(connectionString);
DataTable DT = new DataTable();
con.Open();
SqlDataAdapter DA = new SqlDataAdapter("USE [McFarlane Industries] " +
"EXEC search " +
STR, connectionString);
DA.Fill(DT);
con.Close();
return DT;
}
この関数searchIt
はストアド プロシージャを実行し、DataTable
. ストアド プロシージャは、SQL Server Management Studio で正常に動作しています。
ただし、アプリケーションでは、場合によっては正しく機能しません。
と入力する[space]と、例外がスローされ、ストアドプロシージャには提供されていないパラメーターが必要であると表示されます。
他にも多くの文字を入力すると、文字列「my string」の末尾に無効な文字があるという例外がスローされます。
どうすれば目標を達成できるかについての提案。