[英]Binding search results to data grid
我想在程序中添加搜索功能。 有一個具有此功能的類:
public DataTable Search()
{
string SQL = "Select * from Customer where " + mField + " like '%" + mValue + "%'";
DataTable dt = new DataTable();
dt = dm.GetData(SQL);
return (dt);
}
有mField
和mValue
setter和getter屬性。 DM
是DataManagement
類的對象,該類具有方法GetData
:
public DataTable GetData(string SQL)
{
SqlCommand command = new SqlCommand();
SqlDataAdapter dbAdapter = new SqlDataAdapter();
DataTable DataTable = new DataTable();
command.Connection = clsConnection.GetConnection();
command.CommandText = SQL;
dbAdapter.SelectCommand = command;
dbAdapter.Fill(DataTable);
return (DataTable);
}
搜索功能當前是這樣實現的:
private void btnfind_Click(object sender, EventArgs e)
{
//cust is the object of class customer//
if (tbCustName.Text != "")
{
cust.Field="CustName";
cust.Value = tbCustName.Text;
}
else if (tbAddress.Text != "")
{
cust.Value = tbAddress.Text;
cust.Field="Address";
}
else if (tbEmail.Text != "")
{
cust.Value = tbEmail.Text;
cust.Field="Email";
}
else if (tbCell.Text != "")
{
cust.Value = tbCell.Text;
cust.Field = "Cell";
}
DataTable dt = new DataTable();
dt = cust.Search();
dgCustomer.DataSource = dt;
RefreshGrid();
}
private void RefreshGrid()
{
DataTable dt = new DataTable();
dt = cust.GetCustomers();
dgCustomer.DataSource = dt;
}
這是行不通的。 我不知道為什么 請幫忙。
在RefreshGrid()
方法中添加一個DataBind()
語句,以使新結果實際顯示在Grid上。
private void RefreshGrid()
{
DataTable dt = cust.GetCustomers();
dgCustomer.DataSource = dt;
dgCustomer.DataBind();
}
也可以考慮修改其他方法:
btnfind_Click
不必結束兩次調用cust.Search()
。
private void btnfind_Click(object sender, EventArgs e) { //<snip> // no need to do all this twice. // DataTable dt = new DataTable(); // dt = cust.Search(); // dgCustomer.DataSource = dt; RefreshGrid(); }
您的RefreshGrid
方法正在覆蓋您在btnfind_Click
設置的DataSource
...不要調用它,只需調用DataBind
private void btnfind_Click(object sender, EventArgs e)
{
...
DataTable dt = cust.Search();
dgCustomer.DataSource = dt;
dgCustomer.DataBind();
}
順便說一句,如果您立即將新的DataTable
設置為cust.Search
的結果,則cust.Search
為dt分配新的DataTable
...您只需創建一個實例即可(我在上面的代碼中對其進行了修復)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.