現在のところ、既存のアプリケーションを変更しています。古いUI要素を削除して標準のWinFormsコンポーネントに置き換えています。したがって、このコードは現れても機能します。Combobox.Text.Equals期待値がテストされていません
私のコードは条件付きIFチェックを渡すべきではありません。各コンボボックスのテキストはデフォルトで<Any>
です。したがって、カプセル化されたコードをスキップする必要があります。奇妙な部分の
(フィルタを選択した場合、彼らは結果を返すために、SQLクエリの正しい部品を選択するためのデフォルトのテキストを置き換える)
今すぐ! 私のcombobox.textの一部のテキストプロパティはSystem.Data.DataRowView
です。もともと、これはすべての場合に発生しましたが、最初のチェックは意図通りに<Any>
と表示されます。 (私は全く何も変更しませんでしたが)
Screenshot of problem http://i41.tinypic.com/qnphl2.jpg このスクリーンショットでは、デバッグ中の私のコードを見ることができます。 cbRegGroup.Text
の固定値はSystem.Data.DataRowView
ですが、プロパティのリストに入力してテキストプロパティまでスクロールすると、<Any>
と表示されます。
私は自分のプロジェクトをきれいにして再構築しました...そして大学と相談しましたが、なぜテキスト値が.ToString()されたオブジェクトのように見えるのかわかりません。
私は次に何をすべきか迷っています。助言がありますか?
private void LoadPupilView()
{
try
{
this.Cursor = Cursors.WaitCursor;
dgMain.Rows.Clear();
//now populate list view
String filter = "[surname] LIKE '" + SearchString + "%'";
if (!cbYearGroup.Text.Equals("<Any>"))
{
String YearGroupCode = null;
try
{
YearGroupCode = cbYearGroup.SelectedValue.ToString();
}
catch { }
if (!String.IsNullOrEmpty(YearGroupCode))
filter = filter + " AND [yearGroup] LIKE '" + YearGroupCode + "'";
}
if (!cbRegGroup.Text.Equals("<Any>"))
{
String RegGroupCode = null;
try
{
RegGroupCode = cbRegGroup.SelectedValue.ToString();
}
catch { }
if (!String.IsNullOrEmpty(RegGroupCode))
filter = filter + " AND [registrationGroup] LIKE '" + RegGroupCode + "'";
}
if (!cbHouse.Text.Equals("<Any>"))
{
String HouseGroupCode = null;
try
{
HouseGroupCode = cbHouse.SelectedValue.ToString();
}
catch { }
if (!String.IsNullOrEmpty(HouseGroupCode))
filter = filter + " AND [houseGroup] LIKE '" + HouseGroupCode + "'";
}
DataRow[] dataRows = tblPupils.Select(filter);
foreach (DataRow datarow in dataRows)
{
dgMain.Rows.Add(new object[] {
datarow[0].ToString(),
datarow[1].ToString() + " " + datarow[2].ToString(),
datarow[5].ToString(),
datarow[4].ToString(),
datarow[6].ToString(),
datarow[3].ToString()
});
}
}
catch (Exception err)
{
MessageBox.Show("Error : " + err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
this.Cursor = Cursors.Default;
}
}
なぜこれが矛盾しているのかを知ることに非常に興味があります...最初の条件付きチェックはなぜ渡されましたか?残りが同じではないにもかかわらず。
空の 'catch'ブロックを持たないこともお勧めします。そうすることで、例外が蔓延する。 –
@BryanCrosbyありがとうございますが、私はそれらを空白にしておくことは私たちの元デベロッパーの悪い習慣であることを認識しています。 – Amicable