using F = System.Windows.Forms;
using Microsoft.SharePoint.Client;
using PnP = OfficeDevPnP.Core;
private void btnCompare_Click(object sender, EventArgs e)
{
try
{
//Get source fields
PnP.AuthenticationManager authManagerSource = new PnP.AuthenticationManager();
ClientContext clientContextSource = authManagerSource.GetWebLoginClientContext(txtSourceList.Text);
List sourceList = clientContextSource.Web.Lists.GetByTitle(drpSourceLists.SelectedItem.ToString());
// fetch the fields from this list
FieldCollection sourceFields = sourceList.Fields;
clientContextSource.Load(sourceFields);
clientContextSource.ExecuteQuery();
var sourceColumns = new List<KeyValuePair<string, string>>();
sourceColumns.Add(new KeyValuePair<string, string>("ID", "ID"));
foreach (var f in sourceFields)
{
if (f.InternalName.StartsWith("_") || f.InternalName.StartsWith("ows"))
{
continue; // note: this will also skip the user created fields
}
sourceColumns.Add(new KeyValuePair<string, string>(f.InternalName, f.Title + "|" + f.FieldTypeKind));
}
//Get target fields
PnP.AuthenticationManager authManagerTarget = new PnP.AuthenticationManager();
ClientContext clientContextTarget = authManagerTarget.GetWebLoginClientContext(txtTargetList.Text);
List TargetList = clientContextTarget.Web.Lists.GetByTitle(drpTargetLists.SelectedItem.ToString());
// fetch the fields from this list
FieldCollection targetFields = TargetList.Fields;
clientContextTarget.Load(targetFields);
clientContextTarget.ExecuteQuery();
var targetColumns = new List<string> { "ID" };
foreach (var f in targetFields)
{
if (f.InternalName.StartsWith("_") || f.InternalName.StartsWith("ows"))
{
continue; // note: this will also skip the user created fields
}
targetColumns.Add(f.InternalName);
}
//Compare and remove same fields
foreach (var col in targetColumns)
{
try
{
sourceColumns.Remove(sourceColumns.First(item => item.Key.Equals(col)));
}
catch { }
}
DataTable dt = new DataTable();
dt.Columns.Add("Missing Fields");
dt.Columns.Add("Internal Name");
dt.Columns.Add("Type");
dt.Columns.Add("Create Missing Fields using below Name");
DataRow dr;
foreach (var col in sourceColumns)
{
dr = dt.NewRow();
dr["Missing Fields"] = col.Value.ToString().Split('|')[0];
dr["Internal Name"] = col.Key;
dr["Type"] = col.Value.ToString().Split('|')[1];
dr["Create Missing Fields using below Name"] = System.Xml.XmlConvert.DecodeName(col.Key);
dt.Rows.Add(dr);
}
dataGridViewMissingFields.DataSource = null;
dataGridViewMissingFields.DataSource = dt;
dataGridViewMissingFields.Columns[0].Width = 150;
dataGridViewMissingFields.Columns[1].Width = 150;
dataGridViewMissingFields.Columns[2].Width = 80;
dataGridViewMissingFields.Columns[3].Width = 240;
}
catch(Exception ex)
{
F.MessageBox.Show("Error: " + ex.Message);
}
}
using Microsoft.SharePoint.Client;
using PnP = OfficeDevPnP.Core;
private void btnCompare_Click(object sender, EventArgs e)
{
try
{
//Get source fields
PnP.AuthenticationManager authManagerSource = new PnP.AuthenticationManager();
ClientContext clientContextSource = authManagerSource.GetWebLoginClientContext(txtSourceList.Text);
List sourceList = clientContextSource.Web.Lists.GetByTitle(drpSourceLists.SelectedItem.ToString());
// fetch the fields from this list
FieldCollection sourceFields = sourceList.Fields;
clientContextSource.Load(sourceFields);
clientContextSource.ExecuteQuery();
var sourceColumns = new List<KeyValuePair<string, string>>();
sourceColumns.Add(new KeyValuePair<string, string>("ID", "ID"));
foreach (var f in sourceFields)
{
if (f.InternalName.StartsWith("_") || f.InternalName.StartsWith("ows"))
{
continue; // note: this will also skip the user created fields
}
sourceColumns.Add(new KeyValuePair<string, string>(f.InternalName, f.Title + "|" + f.FieldTypeKind));
}
//Get target fields
PnP.AuthenticationManager authManagerTarget = new PnP.AuthenticationManager();
ClientContext clientContextTarget = authManagerTarget.GetWebLoginClientContext(txtTargetList.Text);
List TargetList = clientContextTarget.Web.Lists.GetByTitle(drpTargetLists.SelectedItem.ToString());
// fetch the fields from this list
FieldCollection targetFields = TargetList.Fields;
clientContextTarget.Load(targetFields);
clientContextTarget.ExecuteQuery();
var targetColumns = new List<string> { "ID" };
foreach (var f in targetFields)
{
if (f.InternalName.StartsWith("_") || f.InternalName.StartsWith("ows"))
{
continue; // note: this will also skip the user created fields
}
targetColumns.Add(f.InternalName);
}
//Compare and remove same fields
foreach (var col in targetColumns)
{
try
{
sourceColumns.Remove(sourceColumns.First(item => item.Key.Equals(col)));
}
catch { }
}
DataTable dt = new DataTable();
dt.Columns.Add("Missing Fields");
dt.Columns.Add("Internal Name");
dt.Columns.Add("Type");
dt.Columns.Add("Create Missing Fields using below Name");
DataRow dr;
foreach (var col in sourceColumns)
{
dr = dt.NewRow();
dr["Missing Fields"] = col.Value.ToString().Split('|')[0];
dr["Internal Name"] = col.Key;
dr["Type"] = col.Value.ToString().Split('|')[1];
dr["Create Missing Fields using below Name"] = System.Xml.XmlConvert.DecodeName(col.Key);
dt.Rows.Add(dr);
}
dataGridViewMissingFields.DataSource = null;
dataGridViewMissingFields.DataSource = dt;
dataGridViewMissingFields.Columns[0].Width = 150;
dataGridViewMissingFields.Columns[1].Width = 150;
dataGridViewMissingFields.Columns[2].Width = 80;
dataGridViewMissingFields.Columns[3].Width = 240;
}
catch(Exception ex)
{
F.MessageBox.Show("Error: " + ex.Message);
}
}
No comments:
Post a Comment