protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    // init SharePoint List Title
                    SPList currentList = SPContext.Current.Web.Lists[this.ListId];
                    lblCurrentListName.Text = string.Format("'{0}' list", currentList.Title);
                    // init list of all DB tables
                    var listDs = _configService.DatabaseTables().Select(item => new { Id = item, Title = item });
                    ddlDbTables.DataSource = listDs;
                    ddlDbTables.DataBind();
                    // try find existing mapping
                    if (this.Mapping != null)
                    {
                        // pre-load existing Mapping
                        ddlDbTables.Visible = false;
                        lblTableName.Text   = string.Format("'{0}'", listDs.Where(t => t.Id.ToString() == Mapping.TableName).Select(t => t.Title).FirstOrDefault());

                        this.UpdateMapperDataSource(Mapping.TableName, Mapping.ListMappingFields, Mapping.Key);
                    }
                    else
                    {
                        // init grid DataSource with NO mapping
                        this.UpdateMapperDataSource(listDs.First().Id, null, null);
                    }

                    btnRemove.Visible = (this.Mapping != null);
                }
                catch (Exception ex)
                {
                    pnlError.Controls.Add(new Label {
                        Text = ex.Message, ForeColor = System.Drawing.Color.Red
                    });
                }
            }
        }