实习day16--任务二总结

任务一的练习是在为任务二做铺垫,任务二主要是需要自己设计数据表,使用的技能大多是任务一中使用的。通过任务二,进一步熟悉了现有的项目,其中遇到的bug,在提高调试技巧的同时,也使我开始思考bug产生的原因和系统的设计和封装。

记录下实现的过程:

 

1.首先是在main.html中增加节点,写主页面并注册在controller文件下的类中,在类中进行页面加载:

m_elGoodsList = this->find_first("#goods_list"); //从当前窗体中找到元素
m_elGoodsList.xcall("page_bind","empList_all"); //查数据并绑定数据分页显示

 

2.搜索功能的实现,首先获取文本框的值和搜索类型,用switch,case结构实现不同的搜索结果显示。更新界面:m_elGoodsList.xcall("page_bind","empList_byNo",wsKey);

这里需要注意的是,sql语句的书写,使用在SqlDict类中定义的sql4模板,需要获取字段,并使用字段转换函数(在FieldTransform.cpp中定义)。

使用模糊匹配[where empName like :empName(字符占位)]时,字段需要处理:wsKey=L"%"+wsKey+L"%";

 

3.新建  创建新窗体:

if(IDOK==CBaseWindow::DoModal("NewTask2_yxm",0,m_hWnd))  //弹出新窗体,参数为:目标窗体,传值,句柄
{
m_elGoodsList=this->find_first("#goods_list");
m_elGoodsList.xcall("refresh");       //刷新
return;
}

 

4.修改 需要注意的是获取选中行的值,并传递。

json::value jsonEmployeeInfo;

jsonEmployeeInfo.set_item("empName",GetElementValue(elRow, "[field='empName']", L""));  //将页面的值赋给“empName”

std::wstring empID=elRow.get_attribute("data-empID");//获取id

jsonEmployeeInfo.set_item("empID",empID);

if(IDOK==CBaseWindow::DoModal("modifyTask2_yxm",(LPVOID)&jsonEmployeeInfo,m_hWnd))

因为对相关类库不熟,这里传值还费了点心,主要是id的获取,因为不能显示在界面上,用了一个white的<span>元素,应该还有更规范的方法。

在接受界面中:

//获得上一个窗口传递过来的数据
json::value valInfo = *(json::value*)(lpParams);

//获取json中的数据
std::wstring wsName = valInfo.get_item("empName").get(L"");

修改数据:

1
2
3
4
5
6
7
8
9
10
11
12
//得到参数
    std::wstring temp_name = GetValue("#edt_name",L"");
    std::wstring temp_sex = GetValue("#edt_sex",L"");
             int temp_age = GetValue("#edt_age",0);
    int temp_edu=GetValue("#edt_edu",0);
    std::wstring temp_intime = GetValue("#edt_intime",L"");
    int temp_depart = GetValue("#edt_depart",0);
    int temp_id=GetValue("[field='empID']",0);
 
   CDB::Sql()<<"update g_demo_employee_yxm set empSex=:temp_sex,empAge=:temp_age,empIntime=:temp_intime,empName=:temp_name,empDepart=:temp_depart where empID=:empID",
         soci::use(temp_sex),soci::use(temp_age)
        ,soci::use(temp_intime),soci::use(temp_name),soci::use(temp_depart),soci::use(temp_id);

 

5.右键增加任务

用的技能点在之前的基础上,需要了解xcall的定义和参数的意义:

elTaskList.xcall("bind","task_list",wsID);  //不分页,缺少分页所需参数

 

6.审核任务:

dom::element elTaskList=this->find_first("#task_list");
dom::element elRow=elTaskList.find_first("tr:checked,tr[check=1]"); //获取点中的行

写完提交后,旭哥提出修改意见,我几乎又花了一天的时间修改。主要是界面显示和功能安排的问题,技术终究是给人使用的,所以要站在用户的角度来思考,不能为了简便牺牲用户体验。

在做的过程中,数据库是问题较多的一块。代码和数据都是现实世界的反映,需要多加思考。


2016.7.29

北京 掌上先机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值