当单击DATAGRID控件时,如何把DATAGRID中的数据显示在编辑框中

jxcbf 2011-01-02 04:17:26
当单击VC++ DATAGRID控件时,如何把DATAGRID控件中的数据显示在对话框的编辑框中.
下面是我的源代码,数据库表只有一个字段,这个字段对应的值有几个,但当我单击DATAGRID控件时,不管点击哪一行,编辑框中始终显示的是第一行的值.请问是什么原因,该如何修改代码?我现在要实现的是当我点击DATAGRID控件中的某一行值时,编辑框中要显示对应的值.请楼主赐教.
void CCbfDlg::OnClickDatagrid()
{
// TODO: Add your control notification handler code here
CString strConn;
strConn="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=EquipmentManage";
_ConnectionPtr pConn(_uuidof(Connection));
pConn->Open((LPCTSTR)strConn,"","",adModeUnknown);


CString str;

_variant_t temp;
CString sql;
sql.Format("select kinds as 资产类别 from tb_kinds");
_RecordsetPtr pRst(_uuidof(Recordset));
pRst->Open((_bstr_t)sql,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

if ((!pRst->ADOEOF)&&(!pRst->BOF))
{
temp = pRst->GetFields()->GetItem((long)0)->Value;

str =temp.bstrVal;

m_edit.SetWindowText(str);

}


}
...全文
99 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcdwell 2011-05-12
  • 打赏
  • 举报
回复
其实是显示Recordset里的当前一条记录而已,
cy_479577011 2011-05-11
  • 打赏
  • 举报
回复
if ((!pRst->ADOEOF)&&(!pRst->BOF))
{
temp = pRst->GetFields()->GetItem((long)0)->Value;
str =temp.bstrVal;

m_edit.SetWindowText(str);

}

显然只是将第一个字段赋值并显示,其他字段则没有。
xiaochun5243 2011-01-20
  • 打赏
  • 举报
回复
void CPrograssDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
UpdateData(true);
pos=m_grid.GetSelectionMark();
m_idval=m_grid.GetItemText(pos,0);
cId=m_grid.GetItemText(pos,0);
m_pici=m_grid.GetItemText(pos,1);
m_name=m_grid.GetItemText(pos,2);
m_shuliang=m_grid.GetItemText(pos,3);
m_condval=m_grid.GetItemText(pos,4);
m_jichuang=m_grid.GetItemText(pos,5);
m_btime=m_grid.GetItemText(pos,6);
m_etime=m_grid.GetItemText(pos,7);
m_sjend=m_grid.GetItemText(pos,8);
m_operator=m_grid.GetItemText(pos,9);
EnAllButton(false,true,true);
m_id.EnableWindow(false);
UpdateData(false);
*pResult = 0;
}
jxcbf 2011-01-09
  • 打赏
  • 举报
回复
当单击VC++ DATAGRID控件时,如何把DATAGRID控件中的数据显示在对话框的编辑框中.
下面是我的源代码,数据库表只有一个字段,这个字段对应的值有几个,但当我单击DATAGRID控件时,不管点击哪一行,编辑框中始终显示的是第一行的值.请问是什么原因,该如何修改代码?我现在要实现的是当我随机点击DATAGRID控件中的某一行值时,编辑框中要显示对应的值.请楼主赐教.
有楼主有以下回答;

sql.Format("select kinds as 资产类别 from tb_kinds");
这个查询语句没有判断条件,查询到的是数据表中的所有记录,默认情况指向第一条记录。所以显示的都是第一条记录。
应该修改SQL语句添加判断条件
但如何为SQL语句添加判断条件呢,怎样具体地修改代码,希能贴上具体代码.
关键代码如下:
void CCbfDlg::OnClickDatagrid()
{
// TODO: Add your control notification handler code here
CString strConn;
strConn="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=EquipmentManage";
_ConnectionPtr pConn(_uuidof(Connection));
pConn->Open((LPCTSTR)strConn,"","",adModeUnknown);


CString str;

_variant_t temp;
CString sql;
sql.Format("select kinds as 资产类别 from tb_kinds");
_RecordsetPtr pRst(_uuidof(Recordset));
pRst->Open((_bstr_t)sql,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

if ((!pRst->ADOEOF)&&(!pRst->BOF))
{
temp = pRst->GetFields()->GetItem((long)0)->Value;

str =temp.bstrVal;

m_edit.SetWindowText(str);

}


}

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧