⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setorginfo.h

📁 Visual C++.net数据库开发经典案例
💻 H
📖 第 1 页 / 共 2 页
字号:
		 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 + -