VC DataGrid的简单使用范例!

来源:互联网 发布:oracle性能监控和优化 编辑:程序博客网 时间:2024/05/24 15:36
    本文为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之前版本的设置略有不同;

    对话框初始化时的数据绑定代码:
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
}

 


    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;
}

       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;
}

   
    最后,希望这篇文章会对你有用。




         
原创粉丝点击