我用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
}
请问我该怎么做?
解决方案 »
- 怎么获得列表中选择项的CListItem*,或者是获得其他值转换成CListItem*也可以。
- 如何将SDL自己创建的窗体设置为mfc单文档创建的窗体
- CAsyncSocket 如果设置为阻塞模式?
- 组合框的奇怪的问题,今天我没有解决,不知各位碰到过没有
- 如何將我的lib庫用到的所有頭文件的路徑包含到我的vc工程中來?以免我總是將許多lib的頭文件與我的工程文件混在一起?
- 如何用VC++6.0中的工具进行逻辑错误的调试?
- 大家看一下这个demo,给个大概的算法过程
- 哪位大是知道,下面的内存泄露如何处理呢?不知道是哪里的原因,帮忙看看!!!
- 谁能给我一个详细的中文版的 API调用方法大全呢
- 谁熟悉CWinThread???
- 奇怪,为什么odbc的更新Update()会失败?
- 请问,如何在工具栏上添加一个可以控制是否闪烁的图标?
m_Grid.GetItemText(row, col)