【发布时间】:2018-10-15 18:53:39
【问题描述】:
我有从DataSet到datagridview的有界数据,我正在尝试过滤
在textchange 事件中datagridview 内的这些有界数据
我遇到了两个问题
我开始输入它工作正常,只是它删除了自定义
datagridview标题并设置查询前列的名称。标题是“名字”,它被替换为“NAM”,这是数据库中的列名......-
第二个问题,当我进入 else 部分时,它不会重新绑定并抛出我错过的异常?
public DataSet GetPatientList() { string connStr = ConfigurationManager.ConnectionStrings["SRJDconnstr"].ToString(); string cmdStr = @"SELECT ROW_NUMBER()OVER(ORDER BY ID) AS SEQ, ID, DocNUM, NAM, FNAME, LFNAME, PHONE, MOBILE, SEX, BIRTHDAY, ADDRESS, ENDATETIME FROM SICK ORDER BY ENDATETIME ASC;"; SqlConnection conn = new SqlConnection(connStr); using (SqlCommand cmd = new SqlCommand(cmdStr, conn)) { conn.Open(); cmd.CommandText = cmdStr; cmd.CommandType = CommandType.Text; ds = new DataSet(); da = new SqlDataAdapter(cmd); da.Fill(ds, "PatientList"); DGV_PatientList.Columns["DGV_PatientList_RowNum"].DataPropertyName = ds.Tables["PatientList"].Columns["SEQ"].ColumnName; DGV_PatientList.Columns["DGV_PatientList_PatientID"].DataPropertyName = ds.Tables["PatientList"].Columns["ID"].ColumnName; DGV_PatientList.Columns["DGV_PatientList_DocNUM"].DataPropertyName = ds.Tables["PatientList"].Columns["DocNUM"].ColumnName; DGV_PatientList.Columns["DGV_PatientList_FirstName"].DataPropertyName = ds.Tables["PatientList"].Columns["NAM"].ColumnName; DGV_PatientList.Columns["DGV_PatientList_FatherName"].DataPropertyName = ds.Tables["PatientList"].Columns["FNAME"].ColumnName; DGV_PatientList.Columns["DGV_PatientList_LastName"].DataPropertyName = ds.Tables["PatientList"].Columns["LFNAME"].ColumnName; DGV_PatientList.Columns["DGV_PatientList_Phone"].DataPropertyName = ds.Tables["PatientList"].Columns["PHONE"].ColumnName; DGV_PatientList.Columns["DGV_PatientList_Mobile"].DataPropertyName = ds.Tables["PatientList"].Columns["MOBILE"].ColumnName; DGV_PatientList.Columns["DGV_PatientList_Gender"].DataPropertyName = ds.Tables["PatientList"].Columns["SEX"].ColumnName; DGV_PatientList.Columns["DGV_PatientList_Birthday"].DataPropertyName = ds.Tables["PatientList"].Columns["BIRTHDAY"].ColumnName; DGV_PatientList.Columns["DGV_PatientList_Address"].DataPropertyName = ds.Tables["PatientList"].Columns["ADDRESS"].ColumnName; DGV_PatientList.Columns["DGV_PatientList_EntryDate"].DataPropertyName = ds.Tables["PatientList"].Columns["ENDATETIME"].ColumnName; return ds; } }
文本更改事件
private void TB_FirstName_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrWhiteSpace(TB_FirstName.Text))
{
// first try below
(ds.Tables["PatientList"] as DataTable).DefaultView.RowFilter = string.Format("NAM LIKE '%{0}%'", TB_FirstName.Text);
// second try below
//ds.Tables["PatientList"].DefaultView.RowFilter = string.Format("NAM LIKE '%{0}%'", TB_FirstName.Text);
}
else
{
DGV_PatientList.DataSource = GetPatientList();
DGV_PatientList.DataSource = ds.Tables["PatientList"].DefaultView;
}
}
【问题讨论】:
-
有什么异常?
-
@MrZander 对象引用未设置为 DGV_PatientList.Columns["DGV_PatientList_RowNum"].DataPropertyName = ds.Tables["PatientList"].Columns["SEQ"] 行上的对象实例。列名; `
标签: c# visual-studio-2013 datagridview .net-4.0