本文为DataGrid控件在VC6.0中使用的基本范例,主要功能为插入一行数据并在控件中显示,及删除一行数据并在控件中显示。
1 在VC6.0中建立MFCApp(exe)工程;
2 导入DataGrid控件:
路径:Project-->Add To Project-->Conponents and Controls
选择集合:
选择组件,选好后别忘记“Insert”:
演示目前的功能仅需要选择图片中的三个类就可以了:
这时组件就被导入到工具箱中了,在Form中画好后再为其添加一个控件变量 m_ctrlDataGrid1;
3 实现数据绑定:
对于数据库的操作,我在这里使用了ADO来执行;
要使用ADO的话不要忘记在你的stdafx.h中将其导入:
#import "c:/program files/common files/system/ado/msado15.dll"
我使用的是SQLSERVER2005 EXPRESS,也就是附带在VS2005中的开发版本,数据库连接字符串的设置如下:
CString strSqlLink = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SalManSystem;Data Source=.//SQLEXPRESS";
注意: Data Source的设置对比2005之前版本的设置略有不同;
对话框初始化时的数据绑定代码:
4 插入操作:
这个非常简单,代码如下:
5 删除操作:
这个需要稍微花点心思。
在这里我的数据库中将em_id设置为主键,所以可以只获取指定行的id值来作为删除条件,若是你的需求有变,那就需要多组合几个键值了:
最后,希望这篇文章会对你有用。
1 在VC6.0中建立MFCApp(exe)工程;
2 导入DataGrid控件:
路径:Project-->Add To Project-->Conponents and Controls
选择集合:
选择组件,选好后别忘记“Insert”:
演示目前的功能仅需要选择图片中的三个类就可以了:
这时组件就被导入到工具箱中了,在Form中画好后再为其添加一个控件变量 m_ctrlDataGrid1;
3 实现数据绑定:
对于数据库的操作,我在这里使用了ADO来执行;
要使用ADO的话不要忘记在你的stdafx.h中将其导入:
#import "c:/program files/common files/system/ado/msado15.dll"
我使用的是SQLSERVER2005 EXPRESS,也就是附带在VS2005中的开发版本,数据库连接字符串的设置如下:
CString strSqlLink = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SalManSystem;Data Source=.//SQLEXPRESS";
注意: Data Source的设置对比2005之前版本的设置略有不同;
对话框初始化时的数据绑定代码:
BOOL CTestDATAGRIDDlg::OnInitDialog()
{
//................以上省略若干行
// TODO: Add extra initialization here
CString strConnection;
strConnection.Format(_T(sqllink));
m_ADODb.Open((LPCTSTR)strConnection); //打开程序数据库
m_Rs.SetDatabase(&m_DBCn);
m_Rs.Open(_T("select * from em_baseinfo;"));
m_ctrlDataGrid1.SetCaption(_T("Add Employeer")); //设置标题
m_ctrlDataGrid1.SetRefDataSource((LPUNKNOWN)m_Rs.GetRecordset()); //绑定数据源
return TRUE; // return TRUE unless you set the focus to a control
}
{
//................以上省略若干行
// TODO: Add extra initialization here
CString strConnection;
strConnection.Format(_T(sqllink));
m_ADODb.Open((LPCTSTR)strConnection); //打开程序数据库
m_Rs.SetDatabase(&m_DBCn);
m_Rs.Open(_T("select * from em_baseinfo;"));
m_ctrlDataGrid1.SetCaption(_T("Add Employeer")); //设置标题
m_ctrlDataGrid1.SetRefDataSource((LPUNKNOWN)m_Rs.GetRecordset()); //绑定数据源
return TRUE; // return TRUE unless you set the focus to a control
}
4 插入操作:
这个非常简单,代码如下:
BOOL CTestDATAGRIDDlg::InsertEMInfo()
{
CString strSQL;
strSQL.Format( _T("INSERT INTO em_baseinfo(em_name, em_id, em_sex, em_edu)VALUES('%s', '%s', '%s', '%s');")
, m_strName, m_strID, m_strSex, m_strEDU );
m_Rs.Open((LPCTSTR)strSQL);
m_Rs.Open(_T("select * from em_baseinfo;"));
m_ctrlDataGrid1.SetRefDataSource((LPUNKNOWN)m_Rs.GetRecordset());
return TRUE;
}
{
CString strSQL;
strSQL.Format( _T("INSERT INTO em_baseinfo(em_name, em_id, em_sex, em_edu)VALUES('%s', '%s', '%s', '%s');")
, m_strName, m_strID, m_strSex, m_strEDU );
m_Rs.Open((LPCTSTR)strSQL);
m_Rs.Open(_T("select * from em_baseinfo;"));
m_ctrlDataGrid1.SetRefDataSource((LPUNKNOWN)m_Rs.GetRecordset());
return TRUE;
}
5 删除操作:
这个需要稍微花点心思。
在这里我的数据库中将em_id设置为主键,所以可以只获取指定行的id值来作为删除条件,若是你的需求有变,那就需要多组合几个键值了:
BOOL CTestDATAGRIDDlg::DelEMInfo()
{
VARIANT index;
CColumns columns;
CColumn column;
index.vt=VT_INT;
columns=m_ctrlDG.GetColumns(); //得到当前选中行的列集
long nCount = columns.GetCount(); //列数
index.lVal = 1;
column = columns.GetItem(index);//顺序得到单元格的值
CString strid;
strid = column.GetText();
strid.Remove(' ');
CString strSQL;
strSQL.Format( _T("delete from em_baseinfo where em_id='%s'")
, strid);
m_Rs.Open((LPCTSTR)strSQL);
m_Rs.Open(_T("select * from em_baseinfo;"));
m_ctrlDataGrid1.SetRefDataSource((LPUNKNOWN)m_Rs.GetRecordset());
return TRUE;
}
{
VARIANT index;
CColumns columns;
CColumn column;
index.vt=VT_INT;
columns=m_ctrlDG.GetColumns(); //得到当前选中行的列集
long nCount = columns.GetCount(); //列数
index.lVal = 1;
column = columns.GetItem(index);//顺序得到单元格的值
CString strid;
strid = column.GetText();
strid.Remove(' ');
CString strSQL;
strSQL.Format( _T("delete from em_baseinfo where em_id='%s'")
, strid);
m_Rs.Open((LPCTSTR)strSQL);
m_Rs.Open(_T("select * from em_baseinfo;"));
m_ctrlDataGrid1.SetRefDataSource((LPUNKNOWN)m_Rs.GetRecordset());
return TRUE;
}
最后,希望这篇文章会对你有用。