update 20241201
This commit is contained in:
377
Client - Kopie/Backup/UIControls/PartnerTree.cs
Normal file
377
Client - Kopie/Backup/UIControls/PartnerTree.cs
Normal file
@@ -0,0 +1,377 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using OnDoc.Klassen;
|
||||
using Syncfusion.Windows.Forms.Tools.MultiColumnTreeView;
|
||||
using System.Reflection;
|
||||
using System.Xml.Linq;
|
||||
using System.Drawing.Imaging;
|
||||
using Database;
|
||||
using OnDoc.UIControls;
|
||||
|
||||
namespace OnDoc.UICintrols
|
||||
{
|
||||
public partial class PartnerTree : UserControl
|
||||
{
|
||||
|
||||
public delegate void StrukturHandler(object myObject, StrukturArgs myArgs);
|
||||
public event StrukturHandler OnStrukturClicked;
|
||||
|
||||
|
||||
public class treeclass
|
||||
{
|
||||
public int dokumentartnr { get; set; }
|
||||
public string bezeichnung { get; set; }
|
||||
public int imageindex { get; set; }
|
||||
public int imageindexopen { get; set; }
|
||||
public int parentid { get; set; }
|
||||
public int sort { get; set; }
|
||||
}
|
||||
|
||||
private int partnernr;
|
||||
public int PartnerNr
|
||||
{
|
||||
get => partnernr;
|
||||
set {
|
||||
partnernr = value;
|
||||
Update_Tree();
|
||||
}
|
||||
}
|
||||
|
||||
public int mitarbeiternr { get; set; }
|
||||
public int profilnr {get;set;}
|
||||
|
||||
public PartnerTree()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.ImageList3.Images.Clear();
|
||||
for (int i = 0; i < 75; i++)
|
||||
{
|
||||
string iname = @"X:\Imagelist\Relaunche\" + i.ToString() + ".png";
|
||||
if (System.IO.File.Exists(iname))
|
||||
{
|
||||
ImageList3.Images.Add(Image.FromFile(iname));
|
||||
}
|
||||
else
|
||||
{
|
||||
iname = @"X:\Imagelist\Relaunche\1.png";
|
||||
ImageList3.Images.Add(Image.FromFile(iname));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void Refresh(int partnernr, int mitarbeiternr, int profilnr)
|
||||
{
|
||||
this.partnernr = partnernr;
|
||||
this.mitarbeiternr = mitarbeiternr;
|
||||
this.profilnr = profilnr;
|
||||
Update_Tree();
|
||||
|
||||
}
|
||||
private bool Update_Tree(TreeNode root = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
treeView1.BeginUpdate();
|
||||
Cursor = Cursors.WaitCursor;
|
||||
if (root == null) { this.treeView1.Nodes.Clear(); }
|
||||
|
||||
|
||||
if (this.partnernr == 0) return false;
|
||||
DataTable treedata = new DataTable();
|
||||
DataTable partnerdata = new DataTable();
|
||||
DataTable rootdata = new DataTable();
|
||||
DB db = new DB(AppParams.connectionstring);
|
||||
|
||||
rootdata = db.Get_Partnerstruktur(PartnerNr, true, mitarbeiternr, profilnr);
|
||||
TreeNode partnernode = new TreeNode();
|
||||
TreeNode foundnode = new TreeNode();
|
||||
foreach (DataRow dr in rootdata.Rows)
|
||||
{
|
||||
foundnode = SearchTreeView(dr["Person"].ToString(), treeView1.Nodes);
|
||||
if (foundnode == null)
|
||||
{
|
||||
foundnode = new TreeNode();
|
||||
foundnode.Text = dr["Person"].ToString();
|
||||
foundnode.Tag = dr["person_nrpar00"].ToString();
|
||||
foundnode.ImageIndex = Convert.ToInt32(dr["person_imageindex"].ToString());
|
||||
foundnode.SelectedImageIndex = Convert.ToInt32(dr["person_imageindexopen"].ToString());
|
||||
Font boldFont = new Font(treeView1.Font, FontStyle.Bold);
|
||||
foundnode.NodeFont = boldFont;
|
||||
treeView1.Nodes.Add(foundnode);
|
||||
|
||||
if (rootdata.Rows.Count > 59000)
|
||||
{
|
||||
foundnode.Nodes.Add(new TreeNode("Dummy"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
partnerdata = db.Get_Partnerstruktur(Convert.ToInt32(dr["Person_nrpar00"].ToString()), false, mitarbeiternr, profilnr);
|
||||
|
||||
foreach (DataRow drp in partnerdata.Rows)
|
||||
{
|
||||
if (Convert.ToInt32(drp["parentid"].ToString()) == 2) { drp["parentid"] = dr["person_nrpar00"].ToString(); };
|
||||
if (Convert.ToInt32(drp["parentid"].ToString()) < 2) { drp.Delete(); };
|
||||
|
||||
}
|
||||
partnerdata.AcceptChanges();
|
||||
|
||||
List<DataRow> list1 = treedata.AsEnumerable().ToList();
|
||||
List<treeclass> tree1 = new List<treeclass>();
|
||||
tree1 = ConvertDataTable<treeclass>(partnerdata);
|
||||
PopulateTree(ref foundnode, tree1);
|
||||
}
|
||||
|
||||
}
|
||||
partnernode = new TreeNode();
|
||||
partnernode.Text = dr["Partner"].ToString();
|
||||
partnernode.Tag = dr["nrpar00"].ToString();
|
||||
partnernode.ImageIndex = Convert.ToInt32(dr["imageindex"].ToString());
|
||||
partnernode.SelectedImageIndex = Convert.ToInt32(dr["imageindexopen"].ToString());
|
||||
Font boldFont1 = new Font(treeView1.Font, FontStyle.Bold);
|
||||
partnernode.NodeFont = boldFont1;
|
||||
foundnode.Nodes.Add(partnernode);
|
||||
if (rootdata.Rows.Count > 50)
|
||||
{
|
||||
partnernode.Nodes.Add(new TreeNode("Dummy"));
|
||||
}
|
||||
else
|
||||
{
|
||||
treedata = db.Get_Partnerstruktur(Convert.ToInt32(dr["nrpar00"].ToString()), false, mitarbeiternr, profilnr);
|
||||
foreach (DataRow drp in treedata.Rows)
|
||||
{
|
||||
if (Convert.ToInt32(drp["parentid"].ToString()) == 2) { drp["parentid"] = dr["nrpar00"].ToString(); };
|
||||
if (Convert.ToInt32(drp["parentid"].ToString()) < 2) { drp.Delete(); };
|
||||
}
|
||||
treedata.AcceptChanges();
|
||||
List<DataRow> list = treedata.AsEnumerable().ToList();
|
||||
List<treeclass> tree = new List<treeclass>();
|
||||
tree = ConvertDataTable<treeclass>(treedata);
|
||||
PopulateTree(ref partnernode, tree);
|
||||
}
|
||||
|
||||
}
|
||||
try
|
||||
{
|
||||
if (rootdata.Rows.Count == 1)
|
||||
{
|
||||
if (ignore != true) { treeView1.ExpandAll(); }
|
||||
}
|
||||
treeView1.SelectedNode = treeView1.Nodes[0];
|
||||
treeView1.SelectedNode.EnsureVisible();
|
||||
}
|
||||
catch { }
|
||||
treeView1.EndUpdate();
|
||||
Cursor = Cursors.Default;
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
treeView1.EndUpdate();
|
||||
Cursor = Cursors.Default;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private TreeNode SearchTreeView(string p_sSearchTerm, TreeNodeCollection p_Nodes)
|
||||
{
|
||||
foreach (TreeNode node in p_Nodes)
|
||||
{
|
||||
if (node.Text == p_sSearchTerm)
|
||||
return node;
|
||||
|
||||
if (node.Nodes.Count > 0)
|
||||
{
|
||||
TreeNode child = SearchTreeView(p_sSearchTerm, node.Nodes);
|
||||
if (child != null) return child;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
public void PopulateTree(ref TreeNode root, List<treeclass> eintraege)
|
||||
{
|
||||
if (root == null)
|
||||
{
|
||||
root = new TreeNode();
|
||||
root.Text = "";
|
||||
root.Tag = null;
|
||||
// get all departments in the list with parent is null
|
||||
var details = eintraege.Where(t => t.parentid == null);
|
||||
foreach (var detail in details)
|
||||
{
|
||||
var child = new TreeNode()
|
||||
{
|
||||
Text = detail.bezeichnung,
|
||||
Tag = detail.dokumentartnr.ToString(),
|
||||
ImageIndex = detail.imageindex,
|
||||
SelectedImageIndex = detail.imageindex,
|
||||
|
||||
};
|
||||
PopulateTree(ref child, eintraege);
|
||||
root.Nodes.Add(child);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//var id = (int)root.Tag;
|
||||
int id = Convert.ToInt32(root.Tag.ToString());
|
||||
var details = eintraege.Where(t => t.parentid == id);
|
||||
foreach (var detail in details)
|
||||
{
|
||||
var child = new TreeNode()
|
||||
{
|
||||
Text = detail.bezeichnung,
|
||||
Tag = detail.dokumentartnr,
|
||||
ImageIndex = detail.imageindex,
|
||||
SelectedImageIndex = detail.imageindex,
|
||||
|
||||
};
|
||||
PopulateTree(ref child, eintraege);
|
||||
root.Nodes.Add(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static List<T> ConvertDataTable<T>(DataTable dt)
|
||||
{
|
||||
List<T> data = new List<T>();
|
||||
foreach (DataRow row in dt.Rows)
|
||||
{
|
||||
T item = GetItem<T>(row);
|
||||
data.Add(item);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
private static T GetItem<T>(DataRow dr)
|
||||
{
|
||||
Type temp = typeof(T);
|
||||
T obj = Activator.CreateInstance<T>();
|
||||
|
||||
foreach (DataColumn column in dr.Table.Columns)
|
||||
{
|
||||
foreach (PropertyInfo pro in temp.GetProperties())
|
||||
{
|
||||
if (pro.Name == column.ColumnName)
|
||||
pro.SetValue(obj, dr[column.ColumnName], null);
|
||||
else
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
private void tsbtnPartnerSearch_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
this.PartnerNr = Convert.ToInt32(this.txtPartnerNr.Text);
|
||||
}
|
||||
catch
|
||||
{
|
||||
this.txtPartnerNr.Text = "";
|
||||
}
|
||||
}
|
||||
|
||||
private void txtPartnerNr_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Enter)
|
||||
{
|
||||
tsbtnPartnerSearch_Click(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
bool ignore = false;
|
||||
private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
|
||||
if (ignore) return;
|
||||
if (e.Node.Nodes.Count < 2)
|
||||
{
|
||||
partnernr = Convert.ToInt32(e.Node.Tag);
|
||||
//e.Node.Nodes.Clear();
|
||||
ignore=true;
|
||||
Update_Tree(e.Node);
|
||||
e.Node.ExpandAll();
|
||||
ignore = false;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
|
||||
{
|
||||
if (this.tschkShowImgID.Checked)
|
||||
{
|
||||
MessageBox.Show(e.Node.ImageIndex.ToString());
|
||||
}
|
||||
int Pnr = 0;
|
||||
|
||||
if (e.Node.Level<2) {
|
||||
Pnr = Convert.ToInt32(e.Node.Tag);
|
||||
}
|
||||
else
|
||||
{
|
||||
Pnr = ReadRecursive(e.Node);
|
||||
}
|
||||
StrukturArgs myArgs = new StrukturArgs("",Convert.ToInt32(e.Node.Tag.ToString()),Pnr);
|
||||
OnStrukturClicked(this, myArgs);
|
||||
}
|
||||
|
||||
private int ReadRecursive(TreeNode node)
|
||||
{
|
||||
TreeNode tmpnode = node;
|
||||
while ( tmpnode.Level>1)
|
||||
{
|
||||
tmpnode = tmpnode.Parent;
|
||||
}
|
||||
|
||||
if (tmpnode.Text.ToString().IndexOf(" - ") < 3)
|
||||
{
|
||||
while (tmpnode.Level > 0)
|
||||
{
|
||||
tmpnode = tmpnode.Parent;
|
||||
}
|
||||
|
||||
}
|
||||
return Convert.ToInt32(tmpnode.Tag);
|
||||
|
||||
}
|
||||
|
||||
private void toolStripButton2_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void toolStripLabel1_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void tsbtnPartnerSuche_Click(object sender, EventArgs e)
|
||||
{
|
||||
Partnersuche partnersuche = new Partnersuche();
|
||||
partnersuche.ShowDialog();
|
||||
if (partnersuche.DialogResult == DialogResult.OK)
|
||||
{
|
||||
if (partnersuche.partnernr != 0)
|
||||
{ this.partnernr = partnersuche.partnernr; Update_Tree(); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user