📄 setorginfo.h
字号:
void PopulateTreeView(String* parentPart,TreeNode* parentNode,DataRowView* parentRow)
{
String* strEnterpriseName;
//将组织结构表另存为tempTable
DataTable* tempTable = this->ds->Tables->Item[S"组织机构编码表"]->Copy();
//新建一个数据视图
DataView* ViewSetOrgInfo = new DataView(tempTable);
ViewSetOrgInfo->RowFilter = String::Format(S"ParentIndex = {0}",parentRow->Item[S"AbsIndex"]->ToString()->Trim());
//添加所有子节点
int RowLength = ViewSetOrgInfo->Count;
//如果该节点没有子节点则返回
if(RowLength <= 0)
return;
for(int i = 0;i < RowLength; i++)
{
strEnterpriseName = ViewSetOrgInfo->Item[i]->Item[S"单位名称"]->ToString()->Trim();
TreeNode* node = new TreeNode(strEnterpriseName);
parentNode->Nodes->Add(node);
//添加子节点的下一级节点
PopulateTreeView(strEnterpriseName,node,ViewSetOrgInfo->Item[i]);
}
}
//---------------------显示选中节点的相关信息------------------------------
private:
System::Void tvOrgTree_AfterSelect(System::Object * sender, System::Windows::Forms::TreeViewEventArgs * e)
{
this->tBoxName->Text = e->Node->Text->Trim();
//显示编号和合成编号
InputCodeAndComCode(e->Node);
}
//---------------根据选中的节点,设置节点的编号和合成编号------------------
void InputCodeAndComCode(TreeNode* myNode)
{
//第二个条件是使根节点的编码为零
if(myNode->Index >= 10 || myNode->Parent == NULL)
{
this->tBoxCode->Text = myNode->Index.ToString()->Trim();
}
else
{
this->tBoxCode->Text = String::Format(S"0{0}",myNode->Index.ToString()->Trim());
}
this->tBoxComCode->Text = GetComCode(myNode);
}
//----------------------------计算合成编号---------------------------------
String* GetComCode(TreeNode* node)
{
String* tempCode = S"";
if(node == NULL)
{
return S"";
}
tempCode = GetComCode(node->Parent);
if(node->Index >= 10 || node->Parent == NULL)
{
tempCode = String::Format("{0}{1}",tempCode,node->Index.ToString());
}
else
{
tempCode = String::Format("0{0}{1}",tempCode,node->Index.ToString());
}
return tempCode;
}
//----------------------------退出窗口---------------------------------
private: System::Void btnQuit_Click(System::Object * sender, System::EventArgs * e)
{
this->Close();
}
//--------------------------修改机构名称--------------------------------
private: System::Void btnModify_Click(System::Object * sender, System::EventArgs * e)
{
String* strEnterpriseName = this->tBoxName->Text->Trim();
//如果没有输入机构名称则返回
if(strEnterpriseName == String::Empty)
return;
String* Filter = String::Format(S"单位编号 = '{0}'",this->tBoxComCode->Text->Trim());
//修改节点内容
this->tvOrgTree->SelectedNode->Text = strEnterpriseName;
//通过单位编号在数据集中查找到数据项,并修改其名称和类别
DataRow* row[] = this->ds->Tables->Item[S"组织机构编码表"]->Select(Filter);
for(int i = 0;i < row->Length;i++)
{
row[i]->Item[S"类别"] = strEnterpriseName;
row[i]->Item[S"单位名称"] = strEnterpriseName;
}
//提交修改
try
{
this->MyDataBase->UpdateDataBase(this->ds,S"组织机构编码表");
}
catch(Exception* e)
{
MessageBox::Show(e->Message,"提示");
}
}
//---------------------------添加第一级项目---------------------------
private: System::Void btnNewFirstClass_Click(System::Object * sender, System::EventArgs * e)
{
int lastRowIndex;
String* strAbsIndex;
int intAbsIndex;
String* strItemIndex;
int intItemIndex;
String* strEnterpriseID;
int intItemLevel;
int intParentIndex;
String* strEnterpriseName = this->tBoxName->Text->Trim();
//如果没有输入机构名称则返回
if(strEnterpriseName == String::Empty)
return;
TreeNode* node = new TreeNode(strEnterpriseName);
this->tvOrgTree->Nodes->Add(node);
this->tvOrgTree->SelectedNode = node;
InputCodeAndComCode(node);
//为新插入的项计算各个数据,如ItemIndex,AbsIndex等
if(this->ds->Tables->Item[S"组织机构编码表"]->Rows->Count <= 0)
{
//如果数据库中没有记录,则初始化各项数据
intAbsIndex = 0;
strItemIndex = this->tBoxCode->Text;
intItemIndex = System::Int32::Parse(strItemIndex);
strEnterpriseID = this->tBoxComCode->Text->Trim();
intItemLevel = 0;
intParentIndex = -1;
this->btnDelete->Enabled = true;
this->btnModify->Enabled = true;
this->btnNewChildClass->Enabled = true;
this->btnNewThisClass->Enabled = true;
}
else
{
lastRowIndex = this->ds->Tables->Item[S"组织机构编码表"]->Rows->Count - 1;
strAbsIndex = this->ds->Tables->Item[S"组织机构编码表"]->Rows->Item[lastRowIndex]->Item[S"AbsIndex"]->ToString()->Trim();
intAbsIndex = System::Int32::Parse(strAbsIndex) + 1;
strItemIndex = this->tBoxCode->Text;
intItemIndex = System::Int32::Parse(strItemIndex);
strEnterpriseID = this->tBoxComCode->Text->Trim();
intItemLevel = 0;
intParentIndex = -1;
}
DataRow* row = this->ds->Tables->Item[S"组织机构编码表"]->NewRow();
row->Item[1] = strEnterpriseName;
row->Item[2] = __box(intAbsIndex);
row->Item[3] = __box(intItemIndex);
row->Item[4] = __box(intItemLevel);
row->Item[5] = __box(intParentIndex);
row->Item[6] = strItemIndex;
row->Item[7] = strEnterpriseID;
row->Item[8] = strEnterpriseName;
this->ds->Tables->Item[S"组织机构编码表"]->Rows->Add(row);
//修改数据库
this->MyDataBase->UpdateDataBase(this->ds,S"组织机构编码表");
}
//---------------------------添加同级项目---------------------------
private: System::Void btnNewThisClass_Click(System::Object * sender, System::EventArgs * e)
{
//获得ItemLevel和ParentIndex
String* strItemLevel = S"";
String* strParentIndex = S"";
String* Filter = String::Format(S"单位编号 = '{0}'",this->tBoxComCode->Text->Trim());
DataRow* row[] = this->ds->Tables->Item[S"组织机构编码表"]->Select(Filter);
if(row->Length > 0)
{
strItemLevel = row[0]->Item[S"ItemLevel"]->ToString()->Trim();
strParentIndex = row[0]->Item[S"ParentIndex"]->ToString()->Trim();
}
//建立新节点
String* strEnterpriseName = this->tBoxName->Text;
TreeNode* node = new TreeNode(strEnterpriseName);
if(this->tvOrgTree->SelectedNode->Parent == NULL)
{
this->tvOrgTree->Nodes->Add(node);
}
else
{
this->tvOrgTree->SelectedNode->Parent->Nodes->Add(node);
}
//填写编码
InputCodeAndComCode(node);
//为新插入的项计算各个数据,如ItemIndex,AbsIndex等
int lastRowIndex = this->ds->Tables->Item[S"组织机构编码表"]->Rows->Count - 1;
String* strAbsIndex = this->ds->Tables->Item[S"组织机构编码表"]->Rows->Item[lastRowIndex]->Item[S"AbsIndex"]->ToString()->Trim();
int intAbsIndex = System::Int32::Parse(strAbsIndex) + 1;
String* strItemIndex = this->tBoxCode->Text;
int intItemIndex = System::Int32::Parse(strItemIndex);
String* strEnterpriseID = this->tBoxComCode->Text->Trim();
int intItemLevel = System::Int32::Parse(strItemLevel);
int intParentIndex = System::Int32::Parse(strParentIndex);
DataRow* newrow = this->ds->Tables->Item[S"组织机构编码表"]->NewRow();
newrow->Item[1] = strEnterpriseName;
newrow->Item[2] = __box(intAbsIndex);
newrow->Item[3] = __box(intItemIndex);
newrow->Item[4] = __box(intItemLevel);
newrow->Item[5] = __box(intParentIndex);
newrow->Item[6] = strItemIndex;
newrow->Item[7] = strEnterpriseID;
newrow->Item[8] = strEnterpriseName;
this->ds->Tables->Item[S"组织机构编码表"]->Rows->Add(newrow);
//修改数据库
this->MyDataBase->UpdateDataBase(this->ds,S"组织机构编码表");
}
//---------------------------添加子级项目---------------------------
private: System::Void btnNewChildClass_Click(System::Object * sender, System::EventArgs * e)
{
//获得ItemLevel和ParentIndex
String* strItemLevel = S"";
String* strParentIndex = S"";
String* Filter = String::Format(S"单位编号 = '{0}'",this->tBoxComCode->Text->Trim());
DataRow* row[] = this->ds->Tables->Item[S"组织机构编码表"]->Select(Filter);
if(row->Length > 0)
{
strItemLevel = row[0]->Item[S"ItemLevel"]->ToString()->Trim();
strParentIndex = row[0]->Item[S"AbsIndex"]->ToString()->Trim();
}
//建立新节点
String* strEnterpriseName = this->tBoxName->Text;
TreeNode* node = new TreeNode(strEnterpriseName);
this->tvOrgTree->SelectedNode->Nodes->Add(node);
//填写编码
InputCodeAndComCode(node);
//为新插入的项计算各个数据,如ItemIndex,AbsIndex等
int lastRowIndex = this->ds->Tables->Item[S"组织机构编码表"]->Rows->Count - 1;
String* strAbsIndex = this->ds->Tables->Item[S"组织机构编码表"]->Rows->Item[lastRowIndex]->Item[S"AbsIndex"]->ToString()->Trim();
int intAbsIndex = System::Int32::Parse(strAbsIndex) + 1;
String* strItemIndex = this->tBoxCode->Text;
int intItemIndex = System::Int32::Parse(strItemIndex);
String* strEnterpriseID = this->tBoxComCode->Text->Trim();
int intItemLevel = System::Int32::Parse(strItemLevel) + 1;
int intParentIndex = System::Int32::Parse(strParentIndex);
DataRow* newrow = this->ds->Tables->Item[S"组织机构编码表"]->NewRow();
newrow->Item[1] = strEnterpriseName;
newrow->Item[2] = __box(intAbsIndex);
newrow->Item[3] = __box(intItemIndex);
newrow->Item[4] = __box(intItemLevel);
newrow->Item[5] = __box(intParentIndex);
newrow->Item[6] = strItemIndex;
newrow->Item[7] = strEnterpriseID;
newrow->Item[8] = strEnterpriseName;
this->ds->Tables->Item[S"组织机构编码表"]->Rows->Add(newrow);
//修改数据库
this->MyDataBase->UpdateDataBase(this->ds,S"组织机构编码表");
}
//---------------------------删除项目---------------------------
private: System::Void btnDelete_Click(System::Object * sender, System::EventArgs * e)
{
String* strEnterPriseID = this->tBoxComCode->Text->Trim();
String* Filter = String::Format(S"单位编号 = '{0}'",strEnterPriseID);
DataRow* row[] = this->ds->Tables->Item[S"组织机构编码表"]->Select(Filter);
if(row->Length > 0)
{
//如果有子项目一并删除
String* childFilter = String::Format(S"ParentIndex = {0}",row[0]->Item[S"AbsIndex"]->ToString()->Trim());
DataRow* childrow[] = this->ds->Tables->Item[S"组织机构编码表"]->Select(childFilter);
for(int i = 0;i < childrow->Length;i++)
{
//修改数据库
String* tempSQL = String::Format(S"Delete from 组织机构编码表 where AbsIndex = {0} AND 类别 = '{1}'",childrow[i]->Item[S"AbsIndex"]->ToString()->Trim(),childrow[i]->Item[S"类别"]->ToString());
this->MyDataBase->SQLOperate(tempSQL);
//修改数据集
childrow[i]->Delete();
}
//修改数据库
String* tempSQL = String::Format(S"Delete from 组织机构编码表 where AbsIndex = {0} AND 类别 = '{1}'",row[0]->Item[S"AbsIndex"]->ToString()->Trim(),row[0]->Item[S"类别"]->ToString());
this->MyDataBase->SQLOperate(tempSQL);
//修改数据集
row[0]->Delete();
this->ds->AcceptChanges();
//删除节点
this->tvOrgTree->SelectedNode->Remove();
}
}
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -