我用MFCgridctrl控件,odbc和access做一个系统,现在能够从数据库中把数据写入控件,但是要把修改后的数据写回数据库失败,请指教:
从数据库写入控件的代码:(成功)
BOOL CMnCourseSalaDlg::OnInitDialog()
{
.......
m_CourseSalaSet.Open();
m_Grid.SetAutoSizeStyle();
m_Grid.SetFixedRowCount(1);
m_Grid.SetFixedColumnCount(1);
m_Grid.SetRowCount(2);
m_Grid.SetColumnCount(4); int nFixedRow = m_Grid.GetFixedRowCount(),
nFixedColumn = m_Grid.GetFixedColumnCount(); for (int row = 0; row < m_Grid.GetRowCount(); row++)
{
for (int col = 0; col < m_Grid.GetColumnCount(); col++)
{
CString str;
GV_ITEM Item; Item.mask = GVIF_TEXT;
Item.row = row;
Item.col = col; if (row < nFixedRow)
{....
str.Format(_T("基本课时工资"));
}
else if (col < nFixedColumn)
str.Format(_T("第%d行"), row);
else
{
switch(col)
{
case 0:
break;
case 1:
str.Format(m_CourseSalaSet.m_basic_salary);
break;
case 2:
str.Format(m_CourseSalaSet.m_over_salary);
break;
case 3:
str.Format(_T("%d"), m_CourseSalaSet.m_base);
break;
default:
break;
}
m_Grid.SetItemState(row, col, m_Grid.GetItemState(row, col) | GVIS_READONLY);
}
Item.strText = str;
m_Grid.SetItem(&Item);
}
m_Grid.AutoSize();
}
........
}
从控件获取修改后的数据;(失败)
void CMnCourseSalaDlg::OnEditCommit()
{
m_Grid.UpdateData(TRUE);
m_CourseSalaSet.Open();
m_CourseSalaSet.Edit();
m_CourseSalaSet.m_basic_salary = m_Grid.GetItemData(1, 1);//返回0,失败
m_CourseSalaSet.m_over_salary = m_Grid.GetItemData(1, 2);//返回0
m_CourseSalaSet.m_base = m_Grid.GetItemData(1, 3);//返回0
}
请问我该怎么做?
从数据库写入控件的代码:(成功)
BOOL CMnCourseSalaDlg::OnInitDialog()
{
.......
m_CourseSalaSet.Open();
m_Grid.SetAutoSizeStyle();
m_Grid.SetFixedRowCount(1);
m_Grid.SetFixedColumnCount(1);
m_Grid.SetRowCount(2);
m_Grid.SetColumnCount(4); int nFixedRow = m_Grid.GetFixedRowCount(),
nFixedColumn = m_Grid.GetFixedColumnCount(); for (int row = 0; row < m_Grid.GetRowCount(); row++)
{
for (int col = 0; col < m_Grid.GetColumnCount(); col++)
{
CString str;
GV_ITEM Item; Item.mask = GVIF_TEXT;
Item.row = row;
Item.col = col; if (row < nFixedRow)
{....
str.Format(_T("基本课时工资"));
}
else if (col < nFixedColumn)
str.Format(_T("第%d行"), row);
else
{
switch(col)
{
case 0:
break;
case 1:
str.Format(m_CourseSalaSet.m_basic_salary);
break;
case 2:
str.Format(m_CourseSalaSet.m_over_salary);
break;
case 3:
str.Format(_T("%d"), m_CourseSalaSet.m_base);
break;
default:
break;
}
m_Grid.SetItemState(row, col, m_Grid.GetItemState(row, col) | GVIS_READONLY);
}
Item.strText = str;
m_Grid.SetItem(&Item);
}
m_Grid.AutoSize();
}
........
}
从控件获取修改后的数据;(失败)
void CMnCourseSalaDlg::OnEditCommit()
{
m_Grid.UpdateData(TRUE);
m_CourseSalaSet.Open();
m_CourseSalaSet.Edit();
m_CourseSalaSet.m_basic_salary = m_Grid.GetItemData(1, 1);//返回0,失败
m_CourseSalaSet.m_over_salary = m_Grid.GetItemData(1, 2);//返回0
m_CourseSalaSet.m_base = m_Grid.GetItemData(1, 3);//返回0
}
请问我该怎么做?
解决方案 »
- GetWindowRect(m_rSettingsRect)和GetWindowRect(&m_rSettingsRect)区别
- 用过vs2008 sp1的CTabView视图的看过来。。。
- BITMAP结构成员的怪异问题,总是想不通!高分悬赏!
- DLL 继承接口
- 最近用VC6.0编译程序老是死掉,是怎么回事啊,请求解决方法
- 我的对话框是CPropertySheet类,属性页的位置问题?
- GetNextView问题???
- 通过DCOM方式从客户端传递ADOConnection指针到服务器中的COM函数,传过去无效吗?
- 一个线程能否分配多个资源句柄?每个句柄使该线程的计数值加一是吗?马上给分!
- VC ADO 调SQL 存储过程耗时问题
- 奇怪,为什么odbc的更新Update()会失败?
- 请问,如何在工具栏上添加一个可以控制是否闪烁的图标?
m_Grid.GetItemText(row, col)