【发布时间】:2015-02-10 23:38:16
【问题描述】:
我已经做了一张桌子:
class TableTag
{
public:
std::string name;
//Wt::Dbo::collection< Wt::Dbo::ptr<TablePost> > tablePosts;
TableTag();
~TableTag();
static void initTableRecords(Wt::Dbo::Session &_session);
template<class Action>
void persist(Action &_action)
{
Wt::Dbo::field(_action, name, "Name");
}
};
typedef Wt::Dbo::collection< Wt::Dbo::ptr<TableTag> > TableTags;
我创建一个模型并将其添加到 WTableView:
qModelTags_ = new Wt::Dbo::QueryModel< Wt::Dbo::ptr<TableTag> >();
qModelTags_->setQuery(ddbbSession_->find<TableTag>());
qModelTags_->addAllFieldsAsColumns();
//WtableView
ctrGridTags_ = new WTableView(this);
ctrGridTags_->setModel(qModelTags_); //qmTags1
ctrGridTags_->setSelectionMode(Wt::SelectionMode::SingleSelection);
root()->addWidget(ctrGridTags_);
这工作正常。现在,我想在表中插入一条记录:
{
Wt::Dbo::Transaction transaction(*ddbbSession_);
Wt::Dbo::ptr<TableTag> tag = ddbbSession_->add(new TableTag());
tag.modify()->name = "Example";
}
并刷新视图:
qModelTags_->reload();
这可行,但我觉得如果我有一个包含 100.000 条记录和 100 个字段的表,重新加载所有记录和字段以仅显示一条新记录是不可接受的。我想我应该使用类似的东西:
int rowNo = qModelTags_->rowCount();
qModelTags_->insertRow(rowNo);
qModelTags_->setItemData(...)
qModelTags_->setData(...)
但我不知道怎么做。我用谷歌搜索过,我研究过例子,论坛......但我没有找到任何例子!谁能帮我举个简单的例子? 提前谢谢...
【问题讨论】: