using System; using System.Data; using System.Collections; using System.Text; using System.Web.UI.WebControls; using CMS.CMSHelper; using CMS.Controls; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.UIControls; public partial class CMSAdminControls_UI_UniSelector_Controls_SelectionDialog : CMSUserControl, IObjectTypeDriven { #region "Variables" private SelectionModeEnum selectionMode = SelectionModeEnum.SingleButton; private string resourcePrefix = "general"; private string objectType = null; private string returnColumnName = null; private string displayNameFormat = null; private string valuesSeparator = ";"; private string iconPath = null; private bool allowEmpty = true; private bool allowAll = false; private string filterControl = null; private bool useDefaultNameFilter = true; private string whereCondition = null; private string orderBy = null; private string siteWhereCondition = null; private int itemsPerPage = 10; private GeneralizedInfo iObjectType = null; private DataSet result = null; private string txtClientId = null; private string hdnClientId = null; private string hdnDrpId = null; private CMSAbstractBaseFilterControl searchControl = null; private string emptyReplacement = " "; private string parentClientId = null; private string dialogGridName = "~/CMSAdminControls/UI/UniSelector/DialogItemList.xml"; private string additionalColumns = null; private string additionalSearchColumns = String.Empty; private string callbackMethod = null; private string disabledItems = null; private string filterMode = null; private bool allowEditTextBox = false; private bool fireOnChanged = false; private bool mLocalizeItems = true; private bool mAddGlobalObjectSuffix = false; private bool mAddGlobalObjectNamePrefix = false; private string mGlobalObjectSuffix = null; private bool mRemoveMultipleCommas = false; private readonly TextHelper th = new TextHelper(); private Hashtable parameters = null; private string mSearchColumns = String.Empty; #endregion #region "Properties" /// /// Indicates whether to remove multiple commas (can happen when DisplayNameFormat is like {%column1%}, {%column2%}, {column3} and column2 is empty. /// public virtual bool RemoveMultipleCommas { get { return mRemoveMultipleCommas; } set { mRemoveMultipleCommas = value; } } /// /// Gets or set the suffix which is added to global objects if AddGlobalObjectSuffix is true. Default is "(global)". /// public string GlobalObjectSuffix { get { if (string.IsNullOrEmpty(mGlobalObjectSuffix)) { mGlobalObjectSuffix = GetString("general.global"); } return mGlobalObjectSuffix; } set { mGlobalObjectSuffix = value; } } /// /// Indicates whether global objects have suffix "(global)" in the grid. /// public bool AddGlobalObjectSuffix { get { return mAddGlobalObjectSuffix; } set { mAddGlobalObjectSuffix = value; } } /// /// Indicates whether global object name should have prefix '.' /// public bool AddGlobalObjectNamePrefix { get { return mAddGlobalObjectNamePrefix; } set { mAddGlobalObjectNamePrefix = value; } } /// /// Specifies whether the selection dialog should resolve localization macros. /// public bool LocalizeItems { get { return mLocalizeItems; } set { mLocalizeItems = value; } } /// /// Current page index. /// public int PageIndex { get { return ValidationHelper.GetInteger(ViewState["PageIndex"], 0); } set { ViewState["PageIndex"] = value; } } /// /// Item prefix. /// public string ItemPrefix { get { return ValidationHelper.GetString(ViewState["ItemPrefix"], ""); } set { ViewState["ItemPrefix"] = value; } } /// /// Item prefix. /// public string FilterWhere { get { return ValidationHelper.GetString(ViewState["FilterWhere"], ""); } set { ViewState["FilterWhere"] = value; } } /// /// Control's unigrid. /// public UniGrid UniGrid { get { return uniGrid; } } /// /// Gets or sets current object type. /// public string ObjectType { get { return ValidationHelper.GetString(parameters["ObjectType"], String.Empty); } set { parameters["ObjectType"] = value; } } #endregion #region "Methods and events" protected override void OnInit(EventArgs e) { base.OnInit(e); // Load parameters LoadParameters(); // Load custom filter LoadFilter(); } protected void Page_Load(object sender, EventArgs e) { // Register event handlers uniGrid.OnExternalDataBound += uniGrid_OnExternalDataBound; uniGrid.OnPageChanged += uniGrid_OnPageChanged; uniGrid.IsLiveSite = IsLiveSite; if (!RequestHelper.IsPostBack()) { uniGrid.Pager.DefaultPageSize = 10; } btnSearch.Click += btnSearch_Click; // Load data into the unigrid LoadControls(); // Get control IDs from parent window txtClientId = QueryHelper.GetString("txtElem", string.Empty); hdnClientId = QueryHelper.GetString("hidElem", string.Empty); hdnDrpId = QueryHelper.GetString("selectElem", string.Empty); parentClientId = QueryHelper.GetString("clientId", string.Empty); // Buttons scripts string buttonsScript = "function US_Cancel(){ Cancel(); return false; }"; switch (selectionMode) { // Button modes case SelectionModeEnum.SingleButton: case SelectionModeEnum.MultipleButton: buttonsScript += "function US_Submit(){ SelectItems(ItemsElem().value); return false; }"; break; // Textbox modes case SelectionModeEnum.SingleTextBox: case SelectionModeEnum.MultipleTextBox: if (allowEditTextBox) { buttonsScript += "function US_Submit(){ SelectItems(ItemsElem().value, ItemsElem().value.replace(/^" + valuesSeparator + "+|" + valuesSeparator + "+$/g, ''), " + ScriptHelper.GetString(hdnClientId) + ", " + ScriptHelper.GetString(txtClientId) + ", " + ScriptHelper.GetString(hdnDrpId) + "); return false; }"; } else { buttonsScript += "function US_Submit(){ SelectItemsReload(ItemsElem().value, nameElem.value, " + ScriptHelper.GetString(hdnClientId) + ", " + ScriptHelper.GetString(txtClientId) + ", " + ScriptHelper.GetString(hdnDrpId) + "); return false; }"; } break; // Other modes default: buttonsScript += "function US_Submit(){ SelectItemsReload(ItemsElem().value, nameElem.value, " + ScriptHelper.GetString(hdnClientId) + ", " + ScriptHelper.GetString(txtClientId) + ", " + ScriptHelper.GetString(hdnDrpId) + "); return false; }"; break; } string script = null; switch (selectionMode) { // Button modes case SelectionModeEnum.SingleButton: case SelectionModeEnum.MultipleButton: { // Register javascript code if (callbackMethod == null) { script = "function SelectItems(items) { wopener.US_SelectItems_" + parentClientId + "(items); CloseDialog(); }"; } else { script = "function SelectItems(items) { wopener." + callbackMethod + "(items.replace(/^;+|;+$/g, '')); CloseDialog(); }"; } } break; // Selector modes default: { // Register javascript code script = @"function SelectItems(items, names, hiddenFieldId, txtClientId) { if(items.length > 0) { wopener.US_SetItems(items, names, hiddenFieldId, txtClientId); } else { wopener.US_SetItems('','', hiddenFieldId, txtClientId, null); }" + (fireOnChanged ? "wopener.US_SelectionChanged_" + parentClientId + "();" : "") + @" return CloseDialog(); } function SelectItemsReload(items, names, hiddenFieldId, txtClientId, hidValue) { if (items.length > 0) { wopener.US_SetItems(items, names, hiddenFieldId, txtClientId, hidValue); } else { wopener.US_SetItems('','', hiddenFieldId, txtClientId, hidValue); } wopener.US_ReloadPage_" + parentClientId + @"(); return CloseDialog(); }"; } break; } script += @" var nameElem = document.getElementById('" + hidName.ClientID + @"'); function ItemsElem() { return document.getElementById('" + hidItem.ClientID + @"'); } function ProcessItem(chkbox, changeChecked) { if (chkbox != null) { var itemsElem = ItemsElem(); var items = itemsElem.value; var item = chkbox.id.substr(3); if (changeChecked) { chkbox.checked = !chkbox.checked; } if (chkbox.checked) { if (items == '') { itemsElem.value = '" + valuesSeparator + "' + escape(item) + '" + valuesSeparator + @"'; } else if (items.toLowerCase().indexOf('" + valuesSeparator + "' + escape(item).toLowerCase() + '" + valuesSeparator + @"') < 0) { itemsElem.value += escape(item) + '" + valuesSeparator + @"'; } } else { var re = new RegExp('" + valuesSeparator + "' + escape(item) + '" + valuesSeparator + @"', 'i'); itemsElem.value = items.replace(re, '" + valuesSeparator + @"'); } } } function Cancel() { CloseDialog(); } function SelectAllItems(checkbox) { var checkboxes = document.getElementsByTagName('input'); for(var i = 0; i < checkboxes.length; i++) { var chkbox = checkboxes[i]; if (chkbox.className == 'chckbox') { if(checkbox.checked) { chkbox.checked = true; } else { chkbox.checked = false; } ProcessItem(chkbox); } } }"; ltlScript.Text = ScriptHelper.GetScript(script + buttonsScript); } protected void uniGrid_OnPageChanged(object sender, EventArgs e) { // Load the grid data ReloadGrid(); } /// /// Change header title for multiple selection. /// protected override void OnPreRender(EventArgs e) { if (!RequestHelper.IsPostBack()) { ChangeSearchCondition(); } // Load the grid data ReloadGrid(); if (uniGrid.GridView.HeaderRow != null) { switch (selectionMode) { // Multiple selection case SelectionModeEnum.Multiple: case SelectionModeEnum.MultipleTextBox: case SelectionModeEnum.MultipleButton: { //uniGrid.GridView.HeaderRow.Cells[0].Text = GetString(this.resourcePrefix + ".select|general.select"); CheckBox chkAll = new CheckBox(); chkAll.ID = "chkAll"; chkAll.ToolTip = GetString("UniSelector.CheckAll"); chkAll.Attributes.Add("onclick", "SelectAllItems(this)"); uniGrid.GridView.HeaderRow.Cells[0].Controls.Clear(); uniGrid.GridView.HeaderRow.Cells[0].Controls.Add(chkAll); uniGrid.GridView.Columns[0].ItemStyle.CssClass = "UnigridSelection"; uniGrid.GridView.HeaderRow.Cells[1].Text = GetString(resourcePrefix + ".itemname|general.itemname"); } break; // Single selection default: { uniGrid.GridView.Columns[0].Visible = false; uniGrid.GridView.HeaderRow.Cells[1].Text = GetString(resourcePrefix + ".itemname|general.itemname"); } break; } } base.OnPreRender(e); } /// /// Loads dynamically custom filter if is defined. /// private void LoadFilter() { // Use user filter if (!String.IsNullOrEmpty(filterControl)) { pnlFilter.Controls.Clear(); searchControl = (CMSAbstractBaseFilterControl)LoadUserControl(filterControl); if (searchControl != null) { searchControl.Parameters = parameters; searchControl.FilteredControl = this; searchControl.OnFilterChanged += searchControl_OnFilterChanged; searchControl.ID = "filterElem"; searchControl.SelectedValue = hidItem.Value.Replace(valuesSeparator, string.Empty); searchControl.FilterMode = filterMode; pnlFilter.Controls.Add(searchControl); pnlFilter.Visible = true; // Get init filter where condition FilterWhere = SqlHelperClass.AddWhereCondition("", searchControl.WhereCondition); } } } /// /// Loads control parameters. /// private void LoadParameters() { string identifier = QueryHelper.GetString("params", null); parameters = (Hashtable)WindowHelper.GetItem(identifier); if (parameters != null) { // Load values from session selectionMode = (SelectionModeEnum)parameters["SelectionMode"]; resourcePrefix = ValidationHelper.GetString(parameters["ResourcePrefix"], "general"); objectType = ValidationHelper.GetString(parameters["ObjectType"], null); returnColumnName = ValidationHelper.GetString(parameters["ReturnColumnName"], null); valuesSeparator = ValidationHelper.GetString(parameters["ValuesSeparator"], ";"); iconPath = ValidationHelper.GetString(parameters["IconPath"], null); allowEmpty = ValidationHelper.GetBoolean(parameters["AllowEmpty"], true); allowAll = ValidationHelper.GetBoolean(parameters["AllowAll"], false); filterControl = ValidationHelper.GetString(parameters["FilterControl"], null); useDefaultNameFilter = ValidationHelper.GetBoolean(parameters["UseDefaultNameFilter"], true); whereCondition = ValidationHelper.GetString(parameters["WhereCondition"], null); orderBy = ValidationHelper.GetString(parameters["OrderBy"], null); itemsPerPage = ValidationHelper.GetInteger(parameters["ItemsPerPage"], 10); emptyReplacement = ValidationHelper.GetString(parameters["EmptyReplacement"], " "); dialogGridName = ValidationHelper.GetString(parameters["DialogGridName"], dialogGridName); additionalColumns = ValidationHelper.GetString(parameters["AdditionalColumns"], null); callbackMethod = ValidationHelper.GetString(parameters["CallbackMethod"], null); allowEditTextBox = ValidationHelper.GetBoolean(parameters["AllowEditTextBox"], false); fireOnChanged = ValidationHelper.GetBoolean(parameters["FireOnChanged"], false); disabledItems = ";" + ValidationHelper.GetString(parameters["DisabledItems"], String.Empty) + ";"; GlobalObjectSuffix = ValidationHelper.GetString(parameters["GlobalObjectSuffix"], ""); AddGlobalObjectSuffix = ValidationHelper.GetBoolean(parameters["AddGlobalObjectSuffix"], false); AddGlobalObjectNamePrefix = ValidationHelper.GetBoolean(parameters["AddGlobalObjectNamePrefix"], false); RemoveMultipleCommas = ValidationHelper.GetBoolean(parameters["RemoveMultipleCommas"], false); filterMode = ValidationHelper.GetString(parameters["FilterMode"], null); displayNameFormat = ValidationHelper.GetString(parameters["DisplayNameFormat"], null); additionalSearchColumns = ValidationHelper.GetString(parameters["AdditionalSearchColumns"], String.Empty); siteWhereCondition = ValidationHelper.GetString(parameters["SiteWhereCondition"], null); // Pre-select unigrid values passed from parent window if (!RequestHelper.IsPostBack()) { string values = (string)parameters["Values"]; if (!String.IsNullOrEmpty(values)) { hidItem.Value = values; parameters["Values"] = null; } } } } /// /// Loads variables and objects. /// private void LoadControls() { // Load objects if (!String.IsNullOrEmpty(objectType)) { iObjectType = CMSObjectHelper.GetReadOnlyObject(objectType); if (iObjectType == null) { throw new Exception("[UniSelector.SelectionDialog]: Object type '" + objectType + "' not found."); } if (returnColumnName == null) { returnColumnName = iObjectType.IDColumn; } } mSearchColumns = GetSearchColumns(); // Display default name filter only if search columns are specified if (useDefaultNameFilter && (!String.IsNullOrEmpty(mSearchColumns) || !String.IsNullOrEmpty(additionalSearchColumns) || displayNameFormat == UniSelector.USER_DISPLAY_FORMAT)) { lblSearch.ResourceString = resourcePrefix + ".entersearch|general.entersearch"; btnSearch.ResourceString = "general.search"; pnlSearch.Visible = true; if (!URLHelper.IsPostback()) { ScriptHelper.RegisterStartupScript(this, typeof(string), "Focus", ScriptHelper.GetScript("try{document.getElementById('" + txtSearch.ClientID + "').focus();}catch(err){}")); } } if (!URLHelper.IsPostback()) { uniGrid.Pager.DefaultPageSize = itemsPerPage; } uniGrid.GridName = dialogGridName; uniGrid.GridView.EnableViewState = false; // Show the OK button if needed switch (selectionMode) { case SelectionModeEnum.Multiple: case SelectionModeEnum.MultipleTextBox: case SelectionModeEnum.MultipleButton: { pnlAll.Visible = true; lnkSelectAll.Text = GetString("UniSelector.SelectAll"); lnkDeselectAll.Text = GetString("UniSelector.DeselectAll"); } break; } } /// /// Returns dataset for specified GeneralizedInfo. /// /// Return column private DataSet GetData(string returnColumn) { int totalRecords = 0; return GetData(returnColumn, 0, 0, ref totalRecords, true); } /// /// Returns dataset for specified GeneralizedInfo. /// private DataSet GetData(string returnColumn, int offset, int maxRecords, ref int totalRecords, bool selection) { // If object type is set if (iObjectType != null) { // Init columns string columns = null; DataSet ds = null; if (!selection) { if (displayNameFormat == UniSelector.USER_DISPLAY_FORMAT) { // Ensure columns which are needed for USER_DISPLAY_FORMAT columns = "UserName;FullName"; } else if (displayNameFormat != null) { columns = DataHelper.GetNotEmpty(TextHelper.GetMacros(displayNameFormat), iObjectType.DisplayNameColumn).Replace(";", ", "); } else { columns = iObjectType.DisplayNameColumn; } } // Add return column name columns = SqlHelperClass.MergeColumns(columns, returnColumn); // Add additional columns columns = SqlHelperClass.MergeColumns(columns, additionalColumns); // Get SiteID column if needed if (AddGlobalObjectSuffix && !string.IsNullOrEmpty(iObjectType.SiteIDColumn)) { columns = SqlHelperClass.MergeColumns(columns, iObjectType.SiteIDColumn); } string where = SqlHelperClass.AddWhereCondition(whereCondition, FilterWhere); if (!String.IsNullOrEmpty(uniGrid.WhereClause)) { where = SqlHelperClass.AddWhereCondition(where, uniGrid.WhereClause); } // Apply site restrictions if (!string.IsNullOrEmpty(siteWhereCondition)) { where = SqlHelperClass.AddWhereCondition(where, siteWhereCondition); } string order = String.Empty; // Order by if (String.IsNullOrEmpty(orderBy)) { order += iObjectType.DisplayNameColumn; } else { order += orderBy; } try { ds = iObjectType.GetData(null, where, (selection ? null : order), 0, columns, false, offset, maxRecords, ref totalRecords); } catch (Exception ex) { uniGrid.ShowError(ex.Message); } return ds; } else { totalRecords = 0; return null; } } /// /// Changes ViewState with search condition for UniGrid. /// private void ChangeSearchCondition() { if (iObjectType != null) { string where = null; // Get default filter where if ((useDefaultNameFilter) && (txtSearch.Text != String.Empty)) { // Trim entered text and make it safe string searchText = txtSearch.Text.Trim().Replace("'", "''"); if (displayNameFormat == UniSelector.USER_DISPLAY_FORMAT) { // Ensure search in columns which are needed for USER_DISPLAY_FORMAT where = String.Format("UserName LIKE N'%{0}%' OR FullName LIKE N'%{0}%'", searchText); } if (!String.IsNullOrEmpty(mSearchColumns)) { // Combine main search columns with additional additionalSearchColumns = additionalSearchColumns.TrimEnd(';') + ";" + mSearchColumns; } // Append additional columns that should be used for search if (!string.IsNullOrEmpty(additionalSearchColumns)) { string[] columns = additionalSearchColumns.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (string column in columns) { where = SqlHelperClass.AddWhereCondition(where, string.Format("{0} LIKE N'%{1}%'", column.Trim(), searchText), "OR"); } } } // Get search filter where if (searchControl != null) { where = SqlHelperClass.AddWhereCondition(where, searchControl.WhereCondition); } // Save where condition to the view state FilterWhere = where; } } /// /// Reloads the grid with given page index. /// protected void ReloadGrid() { int totalRecords = 0; int offset = uniGrid.Pager.CurrentPageSize * (uniGrid.Pager.CurrentPage - 1); // Reload data set with new page index result = GetData(returnColumnName, offset, uniGrid.Pager.CurrentPageSize, ref totalRecords, false); uniGrid.PagerForceNumberOfResults = totalRecords; uniGrid.DataSource = result; uniGrid.ZeroRowsText = !string.IsNullOrEmpty(FilterWhere) ? GetString(resourcePrefix + ".noitemsfound|general.noitemsfound") : GetString(resourcePrefix + ".nodatafound|general.nodatafound"); uniGrid.ReloadData(); } /// /// Returns main search columns to filter. /// private string GetSearchColumns() { if (!String.IsNullOrEmpty(displayNameFormat)) { // Get columns from display name format if empty don't filter anything return TextHelper.GetMacros(displayNameFormat); } else if ((iObjectType.TypeInfo.DisplayNameColumn != TypeInfo.COLUMN_NAME_UNKNOWN)) { // Get column for display name return iObjectType.TypeInfo.DisplayNameColumn; } else if ((iObjectType.TypeInfo.CodeNameColumn != TypeInfo.COLUMN_NAME_UNKNOWN)) { // Get column for code name return iObjectType.TypeInfo.CodeNameColumn; } return String.Empty; } #endregion #region "Events" /// /// Unigrid external data bound handler. /// protected object uniGrid_OnExternalDataBound(object sender, string sourceName, object parameter) { switch (sourceName.ToLowerCSafe()) { case "yesno": return UniGridFunctions.ColoredSpanYesNo(parameter); case "select": { DataRowView drv = (parameter as DataRowView); // Get item ID string itemID = drv[returnColumnName].ToString(); // Add global object name prefix if required if (AddGlobalObjectNamePrefix && !String.IsNullOrEmpty(iObjectType.SiteIDColumn) && (ValidationHelper.GetInteger(DataHelper.GetDataRowValue(drv.Row, iObjectType.SiteIDColumn), 0) == 0)) { itemID = "." + itemID; } // Add checkbox for multiple selection switch (selectionMode) { case SelectionModeEnum.Multiple: case SelectionModeEnum.MultipleTextBox: case SelectionModeEnum.MultipleButton: { string checkBox = "= 0) { checkBox += "checked=\"checked\" "; } if (disabledItems.Contains(";" + itemID + ";")) { checkBox += "disabled=\"disabled\" "; } checkBox += "/>"; return checkBox; } } } break; case "itemname": { DataRowView drv = (parameter as DataRowView); // Get item ID string itemID = drv[returnColumnName].ToString(); // Get item name string itemName = ""; // Special formatted user name if (displayNameFormat == UniSelector.USER_DISPLAY_FORMAT) { string userName = ValidationHelper.GetString(DataHelper.GetDataRowValue(drv.Row, "UserName"), String.Empty); string fullName = ValidationHelper.GetString(DataHelper.GetDataRowValue(drv.Row, "FullName"), String.Empty); itemName = Functions.GetFormattedUserName(userName, fullName, IsLiveSite); } else if (displayNameFormat == null) { itemName = drv[iObjectType.DisplayNameColumn].ToString(); } else { itemName = th.MergeText(displayNameFormat, drv.Row); } if (RemoveMultipleCommas) { itemName = TextHelper.RemoveMultipleCommas(itemName); } // Add the prefixes itemName = ItemPrefix + itemName; itemID = ItemPrefix + itemID; // Add global object name prefix if required if (AddGlobalObjectNamePrefix && !String.IsNullOrEmpty(iObjectType.SiteIDColumn) && (ValidationHelper.GetInteger(DataHelper.GetDataRowValue(drv.Row, iObjectType.SiteIDColumn), 0) == 0)) { itemID = "." + itemID; } if (String.IsNullOrEmpty(itemName)) { itemName = emptyReplacement; } if (AddGlobalObjectSuffix) { if ((iObjectType != null) && !string.IsNullOrEmpty(iObjectType.SiteIDColumn)) { itemName += (ValidationHelper.GetInteger(DataHelper.GetDataRowValue(drv.Row, iObjectType.SiteIDColumn), 0) > 0 ? "" : " " + GlobalObjectSuffix); } } // Link action string onclick = null; bool disabled = disabledItems.Contains(";" + itemID + ";"); if (!disabled) { switch (selectionMode) { case SelectionModeEnum.Multiple: case SelectionModeEnum.MultipleTextBox: case SelectionModeEnum.MultipleButton: onclick = "ProcessItem(document.getElementById('chk" + ScriptHelper.GetString(itemID).Trim('\'') + "'), true); return false;"; break; case SelectionModeEnum.SingleButton: onclick = "SelectItems(" + GetSafe(itemID) + "); return false;"; break; case SelectionModeEnum.SingleTextBox: if (allowEditTextBox) { onclick = "SelectItems(" + GetSafe(itemID) + ", " + GetSafe(itemID) + ", " + ScriptHelper.GetString(hdnClientId) + ", " + ScriptHelper.GetString(txtClientId) + "); return false;"; } else { onclick = "SelectItems(" + GetSafe(itemID) + ", " + GetSafe(itemName) + ", " + ScriptHelper.GetString(hdnClientId) + ", " + ScriptHelper.GetString(txtClientId) + "); return false;"; } break; default: onclick = "SelectItemsReload(" + GetSafe(itemID) + ", " + GetSafe(itemName) + ", " + ScriptHelper.GetString(hdnClientId) + ", " + ScriptHelper.GetString(txtClientId) + ", " + ScriptHelper.GetString(hdnDrpId) + "); return false;"; break; } onclick = "onclick=\"" + onclick + "\" "; } if (LocalizeItems) { itemName = ResHelper.LocalizeString(itemName); } return "
" + HTMLHelper.HTMLEncode(TextHelper.LimitLength(itemName, 100)) + "
"; } } return null; } /// /// Returns string safe for inserting to javascript as parameter. /// /// Parameter private string GetSafe(string param) { // Replace + char for %20 to make it compatible with client side decodeURIComponent return ScriptHelper.GetString(Server.UrlEncode(param).Replace("+", "%20")); } /// /// Button search event handler. /// private void btnSearch_Click(object sender, EventArgs e) { ChangeSearchCondition(); } /// /// On search condition changed. /// private void searchControl_OnFilterChanged() { ChangeSearchCondition(); } /// /// Overridden to get the parameters. /// /// Property name public override object GetValue(string propertyName) { if ((parameters != null) && parameters.Contains(propertyName)) { return parameters[propertyName]; } return base.GetValue(propertyName); } /// /// Overridden set value to collect parameters. /// /// Property name /// Value public override void SetValue(string propertyName, object value) { // Handle special properties switch (propertyName.ToLowerCSafe()) { case "itemprefix": ItemPrefix = ValidationHelper.GetString(value, ""); break; } base.SetValue(propertyName, value); // Set parameters for dialog parameters[propertyName] = value; } protected void lnkSelectAll_Click(object sender, EventArgs e) { if (iObjectType != null) { // Get all values DataSet ds = GetData(returnColumnName); if (!DataHelper.DataSourceIsEmpty(ds)) { string[] values = hidItem.Value.Split(';'); // Build hashtable of current values Hashtable ht = new Hashtable(values.Length); foreach (string value in values) { ht[value] = true; } DataTable dt = ds.Tables[0]; int colIndex = dt.Columns.IndexOf(returnColumnName); // Process all items foreach (DataRow dr in dt.Rows) { string value = dr[returnColumnName].ToString(); if (!ht.Contains(value)) { ht.Add(value, true); } } // Build the selected values string StringBuilder sb = new StringBuilder(); sb.Append(";"); foreach (string value in ht.Keys) { sb.Append(value, ";"); } hidItem.Value = sb.ToString(); } pnlHidden.Update(); } } protected void lnkDeselectAll_Click(object sender, EventArgs e) { DataSet ds = GetData(returnColumnName); if (!DataHelper.DataSourceIsEmpty(ds)) { string[] values = hidItem.Value.Split(';'); // Build hashtable of current values Hashtable ht = new Hashtable(values.Length); foreach (string value in values) { ht[value] = true; } // Remove the values from hashtable foreach (DataRow dr in ds.Tables[0].Rows) { string value = dr[returnColumnName].ToString(); if (ht.Contains(value)) { ht.Remove(value); } } // Build the selected values string StringBuilder sb = new StringBuilder(); sb.Append(";"); foreach (string value in ht.Keys) { sb.Append(value, ";"); } hidItem.Value = sb.ToString(); } // Remove the selection from hidden fields pnlHidden.Update(); } #endregion }