
假如说 原来的 sql语句是
select a.订单号,a.数量,a.MRP数量,b.生产部门 from 订单表 a,部门表 b where .............
如果同时还要修改数据库的话 一点击 就获取数据对应的ID
那就先执行
update 订单表 a,部门表 b set a.数量=a.数量*b.百分比 where 。。。。。。。。。ID=XXX
然后重新查询不就行了
你的意思是在修改表格时,表格不提交更新,只有按某个键时才提交更新是吧。 如果是这样的话,你的想法是错误的。 首先你需将DBGRID链接的ADOQuery控件的LockType属性设为ltBatchOptimistic,这时表格是不向数据库提交修改的行数 int nItemNum = m_list.GetItemCount()列数 int nHeadNum = m_list.GetHeaderCtrl()->GetItemCount()
1、 ListCtrl添加左键单击(NM_CLICK)函数(这个很重要)。
2、 ListCtrl风格设置(一般是网格)。
一般listctrl默认view风格为report,一般在OnInitDialog函数中:
LONG m_lStyle
m_lStyle = GetWindowLong( m_list.m_hWnd , GWL_STYLE)//获取当前窗口style
m_lStyle |= LVS_EX_FULLROWSELECT//选中某行使整行高亮(只适用与report风格的listctrl)
m_lStyle |= LVS_EX_GRIDLINES//网格线(只适用与report风格的listctrl)
//m_lStyle |= LVS_SHOWSELALWAYS//一直选中item
m_list.SetExtendedStyle( m_lStyle )//设置扩展风格
3、 插入数据
一般在OnInitDialog函数中:
//m_list.InsertColumn( 0, "ID", LVCFMT_LEFT, 40 )
//插入列
m_list.InsertColumn( 1, "NAME", LVCFMT_LEFT, 50 )
int nRow = m_list.InsertItem(0, "11")//插入行
m_list.InsertItem(1,"12")
m_list.SetItemText(nRow, 1, "jacky")//设置数据
m_list.SetItemText(nRow+1, 1, "James")
4、 得到listctrl中所有行的checkbox的状态
在OnNMClickList1函数中:
方法一:
m_list.SetExtendedStyle(LVS_EX_CHECKBOXES)
CString str
for(int i=0i<m_list.GetItemCount()i++)
{
if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_list.GetCheck(i))
{
str.Format(_T("第%d行的checkbox为选中状态"), i+1)
AfxMessageBox(str)
}
}
方法二:
POSITION pos = m_list.GetFirstSelectedItemPosition()
CString str
if (pos == NULL)
TRACE0("No items were selected!/n")
else
{
while (pos)
{
int nItem = m_list.GetNextSelectedItem(pos)
str.Format(_T("选中了第%d行"), nItem+1)
AfxMessageBox(str)
}
}
5、 删除所有列(即清空)
while ( m_list.DeleteColumn (0));
6、 得到单击的listctrl的行列号
// 方法一:
DWORD dwPos = GetMessagePos()//返回表示屏幕坐标下光标位置的长整数值
CPoint point( LOWORD(dwPos), HIWORD(dwPos) )
m_list.ScreenToClient(&point)//把屏幕上指定点的屏幕坐标转换成用户坐标
LVHITTESTINFO lvinfo
lvinfo.pt = point
lvinfo.flags = LVHT_ABOVE
int nItem = m_list.SubItemHitTest(&lvinfo)
if(nItem != -1)
{
CString strtemp
strtemp.Format("单击的是第%d行第%d列", lvinfo.iItem, lvinfo.iSubItem)
AfxMessageBox(strtemp)
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)