private void ResolveHeader(DataTable dataTable) { var setting = dataTable.ExtendedProperties["_Setting_"] as DataTableSetting; if (setting != null) { lock (thisLock) { if (!(bool)dataTable.ExtendedProperties["_HeaderIsComplete_"]) { foreach (var rowDefinition in setting.ColumnDefinitions) { var columnData = dataTable.Columns[rowDefinition.Key.ToString()]; if (rowDefinition.IsHeaderSelector) { var el = _htmlDocument.GetElementByQuery(rowDefinition.Header); if (el != null) { columnData.Caption = el.GetStringValue(); } } else { columnData.Caption = rowDefinition.Header; } } dataTable.ExtendedProperties["_HeaderIsComplete_"] = true; } } } }