datagridview
と 5がComboBoxes
あり、ComboBox のテキスト値でグリッドの行をフィルタリングしようとしています。グリッドは、イベントのいくつかの条件に応じてストアド プロシージャで満たされますFormLoad
。btn_filter
クリックイベントでもう一度入力する必要がありますか?
とにかく、この例外は以下のコードでキャッチされます。cannot bind to datatable with no name.
のコードは次のbtn_filter
とおりです。
private void btnFilter_Click(object sender, EventArgs e)
{
String filterStr = "";
if (cmbGrp.Text.Trim() != String.Empty)
filterStr += "group ='" + cmbGrp.Text.Trim() + "' and";
if(cmbMdl.Text.Trim() != String.Empty)
filterStr += " model ='" + cmbMdl.Text.Trim() + "' and";
if (cmbTrh.Text.Trim() != String.Empty)
filterStr += " tarh ='" + cmbTrh.Text.Trim() + "' and";
if (cmbSiz.Text.Trim() != String.Empty)
filterStr += " size ='" + cmbSiz.Text.Trim() + "' and";
if (cmbClr.Text.Trim() != String.Empty)
filterStr += " color ='" + cmbClr.Text.Trim() + "'";
if (filterStr.LastIndexOf("and") == filterStr.Length - 3)
filterStr = filterStr.Remove(filterStr.Length-3,3);
DataView view = new DataView();
if (condition1)
view.Table = Production.usp1(txtProdCode.Text);
else if (condition2)
view.Table = Production.usp2();
else
return;
view.RowFilter = filterStr;
dgv.DataSource = view;
}
ここに storedProcedure 関連の関数があります (Production
クラス内):
public static DataTable usp2()
{
SqlCommand cmd = new SqlCommand("usp2");
return callProc(cmd);
}
public static DataTable usp1(String prod_code)
{
SqlCommand cmd = new SqlCommand("usp1");
cmd.Parameters.Add(new SqlParameter("@prod_code", prod_code));
return callProc(cmd);
}