I attach my Grid.
I've a several button such as:
Quick Add (add new record in line)
Full Add/Full Edit(open a radwindos)
quickEdit (Edit Inline)
I add Vallidators programmatically (I paste my code at last)
I've 2 problems:
1) If I Edit validations works perfect, but for QUICK ADD (add inline) does not work,
2) RadWindows.CONFIRM (I need catch ths button clicked, IF is OK --> I need remove community and if IF cancel I can't remove)
I USE MASTER/DETAILS
ASPX CODE
<telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource"
AllowPaging="True" AllowSorting="True" OnDeleteCommand="RadGrid1_DeleteCommand"
AllowFilteringByColumn="True" OnUpdateCommand="RadGrid1_UpdateCommand" OnInsertCommand="RadGrid1_InsertCommand"
Width="99.8%" PageSize="12" Height="500px" AutoGenerateColumns="False" CellSpacing="0" OnItemCommand="RadGrid1_ItemCommand"
GridLines="None" OnPreRender="RadGrid1_PreRender" OnItemCreated="RadGrid1_ItemCreated">
<MasterTableView DataKeyNames="Id" CommandItemDisplay="Top"
EditMode="InPlace" TableLayout="Fixed" >
<Columns>
<telerik:GridTemplateColumn UniqueName="TemplateEditColumn" HeaderStyle-Width="3%" AllowFiltering="false">
<ItemTemplate>
<asp:ImageButton ID="EditLink" runat="server" ImageUrl="~/UI/Images/pencil.png" ></asp:ImageButton>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridEditCommandColumn HeaderStyle-Width="3%" UniqueName="EditCommandColumn"
ButtonType="ImageButton" EditImageUrl="../Images/grid_edit.png">
</telerik:GridEditCommandColumn>
<telerik:GridButtonColumn UniqueName="btnDelete" ConfirmDialogType="RadWindow"
ButtonType="ImageButton" CommandName="Delete" ConfirmDialogHeight="100px" ConfirmDialogWidth="300px"
HeaderStyle-Width="3%" />
<telerik:GridTemplateColumn DataField="Id" HeaderText="Id" UniqueName="Id" Visible="false">
<InsertItemTemplate>
<telerik:RadTextBox ID="RadTextBox1" runat="server" Text='<%# Bind("Id") %>' Width="150px"
ReadOnly="true" Enabled="false" />
</InsertItemTemplate>
<EditItemTemplate>
<telerik:RadTextBox ID="RadTextBox1" runat="server" Text='<%# Eval("Id") %>' ReadOnly="true"
Width="150px" />
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="Name" UniqueName="Name" ColumnEditorID="editorName" />
<telerik:GridBoundColumn DataField="Description" UniqueName="Description" ColumnEditorID="editorDescription" />
</Columns>
<CommandItemTemplate>
<div style="width: 100%">
<div style="width: 10%; margin-left: 12px; float: left">
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="InitInsert" ><asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/UI/Images/add.png" /> <asp:Label ID="lblQuickAdd" runat="server" /></asp:LinkButton> </div><div style="width: 10%; float: left">
<a href="#" onclick="return ShowInsertForm();">
<asp:ImageButton ID="imgAddFull" runat="server" ImageUrl="~/UI/Images/add.png" />
<asp:Label ID="lblFullAdd" runat="server" />
</a>
</div>
</div>
</CommandItemTemplate>
</MasterTableView>
<PagerStyle Mode="NumericPages" />
</telerik:RadGrid>
<telerik:GridTextBoxColumnEditor ID="editorName" runat="server" TextBoxStyle-Width="200px" />
<telerik:GridTextBoxColumnEditor ID="editorDescription" runat="server" TextBoxStyle-Width="200px" />
<telerik:RadWindowManager ID="RadWindowManager1" runat="server" EnableShadow="true">
CS CODE
using System;
using System.Collections;
using System.Globalization;
using System.Resources;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using WebSearch.Components;
using WebSearch.Log;
using WebSearch.SecurityModel;
namespace WebSearch.UI.Admin
{
public partial class UserManagement : System.Web.UI.Page
{
#region Properties&Variables
private Organization _organization;
private string _culture;
private ResourceManager _resources;
#endregion
#region Events
protected void Page_Load(object sender, EventArgs e)
{
GetInfo();
if(!Page.IsPostBack)
{
LoadSettings();
}
}
protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
LoadData();
}
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
RadGrid1.MasterTableView.GetColumnSafe("RowIndicator").Display = false;
RadGrid1.MasterTableView.GetColumnSafe("IsSuper").Display = App.CurrentUserIsSuper();
CommonFunctions.RemoveFilterOptions(RadGrid1);
}
protected void RadGrid1_InsertCommand(object sender, GridCommandEventArgs e)
{
if (!Page.IsValid) return;
GridEditableItem item = e.Item as GridEditableItem;
if (item != null)
{
Hashtable values = new Hashtable();
item.ExtractValues(values);
_organization = new Organization
{
User = new User
{
FirstName = values["FirstName"] == null ? null : values["FirstName"].ToString(),
MiddleName = values["MiddleName"] == null ? null : values["MiddleName"].ToString(),
LastName = values["LastName"] == null ? null : values["LastName"].ToString(),
Address = values["Address"] == null ? null : values["Address"].ToString(),
Phone = values["Phone"] == null ? null : values["Phone"].ToString(),
CellPhone = values["CellPhone"] == null ? null : values["CellPhone"].ToString(),
ExternalId = values["ExternalId"] == null ? null : values["ExternalId"].ToString(),
Loginid = values["LoginId"] == null ? null : values["LoginId"].ToString(),
Email = values["Email"] == null ? null : values["Email"].ToString(),
IsSuper = values["IsSuper"] == null ? false : Convert.ToBoolean(values["IsSuper"]),
}
}
;
try
{
_organization.CreateUser();
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
}
}
protected void RadGrid1_DeleteCommand(object sender, GridCommandEventArgs e)
{
var userId = (e.Item as GridDataItem).GetDataKeyValue("Id").ToString();
_organization = new Organization
{
User = new User() { Id = Convert.ToInt16(userId) }
};
if ( _organization.IsSuperUser(Convert.ToInt16(userId) ))
{
if (_organization.IsUniqueSuper())
{
RadWindowManager1.RadAlert(_resources.GetString("ErrorDelete", new CultureInfo(_culture)), 330, 100, _resources.GetString("ErrorTitleDelete", new CultureInfo(_culture)), "");
//TODO: IF OK IS CLICKED REMOVE COMMUNITY
}
}
else
{
_organization.RemoveUser();
}
}
protected void RadGrid1_UpdateCommand(object sender, GridCommandEventArgs e)
{
if (!Page.IsValid) return;
GridEditableItem item = e.Item as GridEditableItem;
if (item != null)
{
var userId = item.GetDataKeyValue("Id");
Hashtable values = new Hashtable();
item.ExtractValues(values);
_organization = new Organization
{
User = new User
{
Id = Convert.ToInt16(userId),
FirstName = values["FirstName"] == null ? null : values["FirstName"].ToString(),
MiddleName = values["MiddleName"] == null ? null : values["MiddleName"].ToString(),
LastName = values["LastName"] == null ? null : values["LastName"].ToString(),
Address = values["Address"] == null ? null : values["Address"].ToString(),
Phone = values["Phone"] == null ? null : values["Phone"].ToString(),
CellPhone = values["CellPhone"] == null ? null : values["CellPhone"].ToString(),
ExternalId = values["ExternalId"] == null ? null : values["ExternalId"].ToString(),
Loginid = values["LoginId"] == null ? null : values["LoginId"].ToString(),
Email = values["Email"] == null ? null : values["Email"].ToString(),
IsSuper = values["IsSuper"] == null ? false :Convert.ToBoolean(values["IsSuper"]),
}
}
;
_organization.quick = true;
_organization.UpdateUser();
}
}
protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
{
if (e.Argument == "Rebind")
{
RadGrid1.MasterTableView.SortExpressions.Clear();
RadGrid1.MasterTableView.GroupByExpressions.Clear();
RadGrid1.Rebind();
}
else if (e.Argument == "RebindAndNavigate")
{
RadGrid1.MasterTableView.SortExpressions.Clear();
RadGrid1.MasterTableView.GroupByExpressions.Clear();
RadGrid1.MasterTableView.CurrentPageIndex = RadGrid1.MasterTableView.PageCount - 1;
RadGrid1.Rebind();
}
}
protected void RadGrid1_ItemUpdated(object source, Telerik.Web.UI.GridUpdatedEventArgs e)
{
GridEditableItem item = (GridEditableItem)e.Item;
if (e.Exception != null)
{
e.KeepInEditMode = true;
e.ExceptionHandled = true;
}
}
protected void RadGrid1_ItemInserted(object source, GridInsertedEventArgs e)
{
if (e.Exception != null)
{
e.ExceptionHandled = true;
}
}
protected void RadGrid1_ItemDeleted(object source, GridDeletedEventArgs e)
{
GridDataItem dataItem = (GridDataItem)e.Item;
if (e.Exception != null)
{
e.ExceptionHandled = true;
}
}
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
{
if (_resources == null || _culture == null) GetInfo();
GridCommandItem item = e.Item as GridCommandItem;
if (item != null)
{
((Label)item.FindControl("lblQuickAdd")).Text = _resources.GetString("lblQuickAdd", new CultureInfo(_culture));
((Label)item.FindControl("lblFullAdd")).Text = _resources.GetString("lblFullAdd", new CultureInfo(_culture));
}
if (e.Item is GridDataItem)
{
if (e.Item.ItemIndex < 0) return;
ImageButton editLink = (ImageButton)e.Item.FindControl("EditLink");
editLink.AlternateText = _resources.GetString(editLink.ID, new CultureInfo(_culture));
editLink.Attributes["href"] = "#";
editLink.Attributes["onclick"] = String.Format("return ShowEditForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"], e.Item.ItemIndex);
}
/*validations*/
if ((e.Item is GridEditableItem && e.Item.IsInEditMode) )
{
for (int i =2; i < RadGrid1.MasterTableView.Columns.Count; i++ )
{
if (RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "firstname" ||
RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "lastname" ||
RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "loginid" ||
RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "email")
AddRequiredValidator(RadGrid1.MasterTableView.Columns[i].UniqueName, e);
if (RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "email" ||
RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "loginid")
AddCustomValidator(RadGrid1.MasterTableView.Columns[i].UniqueName, e);
if (RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "email")
AddExpressRegularEmail(RadGrid1.MasterTableView.Columns[i].UniqueName, e);
}
}
if (e.Item is GridDataItem && e.Item.IsInEditMode)
{
GridDataItem itemc = (GridDataItem)e.Item;
CheckBox chkbox = (CheckBox)itemc["IsSuper"].Controls[0];
chkbox.Enabled = true;
}
}
protected void RadGrid1_ItemCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
{
if (e.CommandName == RadGrid.EditCommandName)
{
Session["ID"] = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"];
}
if (e.CommandName == RadGrid.InitInsertCommandName) //"Quick add new" button clicked
{
GridTemplateColumn fulledit = (GridTemplateColumn)RadGrid1.MasterTableView.GetColumn("TemplateEditColumn");
fulledit.Visible = false;
}
else if (e.CommandName == RadGrid.RebindGridCommandName && e.Item.OwnerTableView.IsItemInserted)
{
e.Canceled = true;
}
else
{
GridTemplateColumn fulledit = (GridTemplateColumn)RadGrid1.MasterTableView.GetColumn("TemplateEditColumn");
if (!fulledit.Visible)
fulledit.Visible = true;
}
}
protected void cvLoginId_ServerValidate(object sender, ServerValidateEventArgs e)
{
_organization = new Organization();
e.IsValid = !_organization.ExistLogin(e.Value.ToString(), GetId());
}
protected void cvEmail_ServerValidate(object sender, ServerValidateEventArgs e)
{
_organization = new Organization();
e.IsValid = !_organization.ExistEmail(e.Value.ToString(), GetId());
}
#endregion
#region Methods
private void AddCustomValidator(string colName, GridItemEventArgs e)
{
GridEditableItem itemEditable = e.Item as GridEditableItem;
if (itemEditable != null)
{
GridTextBoxColumnEditor editor = (GridTextBoxColumnEditor)itemEditable.EditManager.GetColumnEditor(colName);
TableCell cell = (TableCell)editor.TextBoxControl.Parent;
CustomValidator validator = new CustomValidator();
editor.TextBoxControl.ID = colName;
validator.ControlToValidate = editor.TextBoxControl.ID;
validator.CssClass = "validator";
validator.Display = ValidatorDisplay.Dynamic;
validator.ErrorMessage = _resources.GetString("cv"+colName, new CultureInfo(_culture));
if (colName.ToLower() == "email")
validator.ServerValidate += cvEmail_ServerValidate;
if (colName.ToLower() == "loginid")
validator.ServerValidate += cvLoginId_ServerValidate;
cell.Controls.Add(validator);
}
}
private int GetId()
{
return Convert.ToInt16(Session["ID"] ?? 0);
}
private void AddExpressRegularEmail(string colName, GridItemEventArgs e){
GridEditableItem itemEditable = e.Item as GridEditableItem;
if (itemEditable != null)
{
GridTextBoxColumnEditor editor = (GridTextBoxColumnEditor)itemEditable.EditManager.GetColumnEditor(colName);
TableCell cell = (TableCell)editor.TextBoxControl.Parent;
RegularExpressionValidator validator = new RegularExpressionValidator();
editor.TextBoxControl.ID = colName;
validator.ControlToValidate = editor.TextBoxControl.ID;
validator.CssClass = "validator";
validator.Display = ValidatorDisplay.Dynamic;
validator.ErrorMessage = _resources.GetString("revEmail", new CultureInfo(_culture));
validator.ValidationExpression = @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$";
cell.Controls.Add(validator);
}
}
private void AddRequiredValidator( string colName, GridItemEventArgs e)
{
GridEditableItem itemEditable = e.Item as GridEditableItem;
if (itemEditable == null) return;
GridTextBoxColumnEditor editor = (GridTextBoxColumnEditor)itemEditable.EditManager.GetColumnEditor(colName);
TableCell cell = (TableCell)editor.TextBoxControl.Parent;
RequiredFieldValidator validator = new RequiredFieldValidator();
editor.TextBoxControl.ID = colName;
validator.ControlToValidate = editor.TextBoxControl.ID;
validator.CssClass = "validator";
validator.Display = ValidatorDisplay.Dynamic;
validator.ErrorMessage = "*";
cell.Controls.Add(validator);
}
private void LoadData()
{
_organization = new Organization();
try
{
RadGrid1.DataSource = _organization.GetUsersOfOrganization();
}
catch (Exception ex)
{
WriterLog.WriterinlogFil(ex);
throw new Exception(ex.ToString());
}
}
private void LoadSettings()
{
if (_resources == null || _culture == null) GetInfo();
RadGrid1.MasterTableView.EditFormSettings.InsertCaption = _resources.GetString("insertCaption", new CultureInfo(_culture));
string type = Request.QueryString["Type"] ;
if (string.IsNullOrEmpty(type)) type = "List";
SetTitle("lblTitileList");
RadGrid1.MasterTableView.GetColumnSafe("FirstName").HeaderText = _resources.GetString("lblFirstName", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("MiddleName").HeaderText = _resources.GetString("lblMiddleName", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("LastName").HeaderText = _resources.GetString("lblLastName", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("CellPhone").HeaderText = _resources.GetString("lblCellPhone", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("Phone").HeaderText = _resources.GetString("lblPhone", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("Address").HeaderText = _resources.GetString("lblAddress", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("Email").HeaderText = _resources.GetString("lblEmail", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("ExternalId").HeaderText = _resources.GetString("lblExternalId", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("LoginId").HeaderText = _resources.GetString("lblLoginId", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("IsSuper").HeaderText = _resources.GetString("IsSuper", new CultureInfo(_culture));
RadGrid1.MasterTableView.EditFormSettings.CaptionFormatString = _resources.GetString("captionFormatString", new CultureInfo(_culture));
// RadGrid1.ClientSettings.EnablePostBackOnRowClick = true;
RadGrid1.ClientSettings.AllowColumnsReorder = true;
RadGrid1.ClientSettings.ReorderColumnsOnClient = true;
RadGrid1.ClientSettings.ColumnsReorderMethod = GridClientSettings.GridColumnsReorderMethod.Swap;
RadGrid1.ClientSettings.AllowColumnHide = true;
RadGrid1.ClientSettings.Resizing.AllowColumnResize = false;
RadGrid1.ClientSettings.Resizing.AllowResizeToFit = true;
RadGrid1.ClientSettings.Resizing.EnableRealTimeResize = true;
RadGrid1.ClientSettings.Resizing.ResizeGridOnColumnResize = true;
RadGrid1.ClientSettings.Resizing.AllowColumnResize = true;
RadGrid1.ClientSettings.Resizing.ClipCellContentOnResize = true;
RadGrid1.Culture = new CultureInfo(_culture);
GridButtonColumn btndelete = (GridButtonColumn)RadGrid1.Columns.FindByUniqueName("btnDelete");
btndelete.ConfirmText = _resources.GetString("confirmText", new CultureInfo(_culture));
btndelete.ConfirmTitle = _resources.GetString("confirmTitle", new CultureInfo(_culture));
switch (type)
{
case "New":
UserListDialog.NavigateUrl = "UserForm.aspx";
UserListDialog.VisibleOnPageLoad = true;
break;
}
}
private void SetTitle(string resx)
{
if (_resources == null || _culture == null) GetInfo();
if (resx != null)
lblTitle.Text = _resources.GetString(resx, new CultureInfo(_culture));
}
private void GetInfo()
{
_culture = App.CurrentCulture();
_resources = App.GetAdminResources("UserManagement");
}
#endregion
}
}
Regards
I've a several button such as:
Quick Add (add new record in line)
Full Add/Full Edit(open a radwindos)
quickEdit (Edit Inline)
I add Vallidators programmatically (I paste my code at last)
I've 2 problems:
1) If I Edit validations works perfect, but for QUICK ADD (add inline) does not work,
2) RadWindows.CONFIRM (I need catch ths button clicked, IF is OK --> I need remove community and if IF cancel I can't remove)
I USE MASTER/DETAILS
ASPX CODE
<telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource"
AllowPaging="True" AllowSorting="True" OnDeleteCommand="RadGrid1_DeleteCommand"
AllowFilteringByColumn="True" OnUpdateCommand="RadGrid1_UpdateCommand" OnInsertCommand="RadGrid1_InsertCommand"
Width="99.8%" PageSize="12" Height="500px" AutoGenerateColumns="False" CellSpacing="0" OnItemCommand="RadGrid1_ItemCommand"
GridLines="None" OnPreRender="RadGrid1_PreRender" OnItemCreated="RadGrid1_ItemCreated">
<MasterTableView DataKeyNames="Id" CommandItemDisplay="Top"
EditMode="InPlace" TableLayout="Fixed" >
<Columns>
<telerik:GridTemplateColumn UniqueName="TemplateEditColumn" HeaderStyle-Width="3%" AllowFiltering="false">
<ItemTemplate>
<asp:ImageButton ID="EditLink" runat="server" ImageUrl="~/UI/Images/pencil.png" ></asp:ImageButton>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridEditCommandColumn HeaderStyle-Width="3%" UniqueName="EditCommandColumn"
ButtonType="ImageButton" EditImageUrl="../Images/grid_edit.png">
</telerik:GridEditCommandColumn>
<telerik:GridButtonColumn UniqueName="btnDelete" ConfirmDialogType="RadWindow"
ButtonType="ImageButton" CommandName="Delete" ConfirmDialogHeight="100px" ConfirmDialogWidth="300px"
HeaderStyle-Width="3%" />
<telerik:GridTemplateColumn DataField="Id" HeaderText="Id" UniqueName="Id" Visible="false">
<InsertItemTemplate>
<telerik:RadTextBox ID="RadTextBox1" runat="server" Text='<%# Bind("Id") %>' Width="150px"
ReadOnly="true" Enabled="false" />
</InsertItemTemplate>
<EditItemTemplate>
<telerik:RadTextBox ID="RadTextBox1" runat="server" Text='<%# Eval("Id") %>' ReadOnly="true"
Width="150px" />
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="Name" UniqueName="Name" ColumnEditorID="editorName" />
<telerik:GridBoundColumn DataField="Description" UniqueName="Description" ColumnEditorID="editorDescription" />
</Columns>
<CommandItemTemplate>
<div style="width: 100%">
<div style="width: 10%; margin-left: 12px; float: left">
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="InitInsert" ><asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/UI/Images/add.png" /> <asp:Label ID="lblQuickAdd" runat="server" /></asp:LinkButton> </div><div style="width: 10%; float: left">
<a href="#" onclick="return ShowInsertForm();">
<asp:ImageButton ID="imgAddFull" runat="server" ImageUrl="~/UI/Images/add.png" />
<asp:Label ID="lblFullAdd" runat="server" />
</a>
</div>
</div>
</CommandItemTemplate>
</MasterTableView>
<PagerStyle Mode="NumericPages" />
</telerik:RadGrid>
<telerik:GridTextBoxColumnEditor ID="editorName" runat="server" TextBoxStyle-Width="200px" />
<telerik:GridTextBoxColumnEditor ID="editorDescription" runat="server" TextBoxStyle-Width="200px" />
<telerik:RadWindowManager ID="RadWindowManager1" runat="server" EnableShadow="true">
CS CODE
using System;
using System.Collections;
using System.Globalization;
using System.Resources;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using WebSearch.Components;
using WebSearch.Log;
using WebSearch.SecurityModel;
namespace WebSearch.UI.Admin
{
public partial class UserManagement : System.Web.UI.Page
{
#region Properties&Variables
private Organization _organization;
private string _culture;
private ResourceManager _resources;
#endregion
#region Events
protected void Page_Load(object sender, EventArgs e)
{
GetInfo();
if(!Page.IsPostBack)
{
LoadSettings();
}
}
protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
LoadData();
}
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
RadGrid1.MasterTableView.GetColumnSafe("RowIndicator").Display = false;
RadGrid1.MasterTableView.GetColumnSafe("IsSuper").Display = App.CurrentUserIsSuper();
CommonFunctions.RemoveFilterOptions(RadGrid1);
}
protected void RadGrid1_InsertCommand(object sender, GridCommandEventArgs e)
{
if (!Page.IsValid) return;
GridEditableItem item = e.Item as GridEditableItem;
if (item != null)
{
Hashtable values = new Hashtable();
item.ExtractValues(values);
_organization = new Organization
{
User = new User
{
FirstName = values["FirstName"] == null ? null : values["FirstName"].ToString(),
MiddleName = values["MiddleName"] == null ? null : values["MiddleName"].ToString(),
LastName = values["LastName"] == null ? null : values["LastName"].ToString(),
Address = values["Address"] == null ? null : values["Address"].ToString(),
Phone = values["Phone"] == null ? null : values["Phone"].ToString(),
CellPhone = values["CellPhone"] == null ? null : values["CellPhone"].ToString(),
ExternalId = values["ExternalId"] == null ? null : values["ExternalId"].ToString(),
Loginid = values["LoginId"] == null ? null : values["LoginId"].ToString(),
Email = values["Email"] == null ? null : values["Email"].ToString(),
IsSuper = values["IsSuper"] == null ? false : Convert.ToBoolean(values["IsSuper"]),
}
}
;
try
{
_organization.CreateUser();
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
}
}
protected void RadGrid1_DeleteCommand(object sender, GridCommandEventArgs e)
{
var userId = (e.Item as GridDataItem).GetDataKeyValue("Id").ToString();
_organization = new Organization
{
User = new User() { Id = Convert.ToInt16(userId) }
};
if ( _organization.IsSuperUser(Convert.ToInt16(userId) ))
{
if (_organization.IsUniqueSuper())
{
RadWindowManager1.RadAlert(_resources.GetString("ErrorDelete", new CultureInfo(_culture)), 330, 100, _resources.GetString("ErrorTitleDelete", new CultureInfo(_culture)), "");
//TODO: IF OK IS CLICKED REMOVE COMMUNITY
}
}
else
{
_organization.RemoveUser();
}
}
protected void RadGrid1_UpdateCommand(object sender, GridCommandEventArgs e)
{
if (!Page.IsValid) return;
GridEditableItem item = e.Item as GridEditableItem;
if (item != null)
{
var userId = item.GetDataKeyValue("Id");
Hashtable values = new Hashtable();
item.ExtractValues(values);
_organization = new Organization
{
User = new User
{
Id = Convert.ToInt16(userId),
FirstName = values["FirstName"] == null ? null : values["FirstName"].ToString(),
MiddleName = values["MiddleName"] == null ? null : values["MiddleName"].ToString(),
LastName = values["LastName"] == null ? null : values["LastName"].ToString(),
Address = values["Address"] == null ? null : values["Address"].ToString(),
Phone = values["Phone"] == null ? null : values["Phone"].ToString(),
CellPhone = values["CellPhone"] == null ? null : values["CellPhone"].ToString(),
ExternalId = values["ExternalId"] == null ? null : values["ExternalId"].ToString(),
Loginid = values["LoginId"] == null ? null : values["LoginId"].ToString(),
Email = values["Email"] == null ? null : values["Email"].ToString(),
IsSuper = values["IsSuper"] == null ? false :Convert.ToBoolean(values["IsSuper"]),
}
}
;
_organization.quick = true;
_organization.UpdateUser();
}
}
protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
{
if (e.Argument == "Rebind")
{
RadGrid1.MasterTableView.SortExpressions.Clear();
RadGrid1.MasterTableView.GroupByExpressions.Clear();
RadGrid1.Rebind();
}
else if (e.Argument == "RebindAndNavigate")
{
RadGrid1.MasterTableView.SortExpressions.Clear();
RadGrid1.MasterTableView.GroupByExpressions.Clear();
RadGrid1.MasterTableView.CurrentPageIndex = RadGrid1.MasterTableView.PageCount - 1;
RadGrid1.Rebind();
}
}
protected void RadGrid1_ItemUpdated(object source, Telerik.Web.UI.GridUpdatedEventArgs e)
{
GridEditableItem item = (GridEditableItem)e.Item;
if (e.Exception != null)
{
e.KeepInEditMode = true;
e.ExceptionHandled = true;
}
}
protected void RadGrid1_ItemInserted(object source, GridInsertedEventArgs e)
{
if (e.Exception != null)
{
e.ExceptionHandled = true;
}
}
protected void RadGrid1_ItemDeleted(object source, GridDeletedEventArgs e)
{
GridDataItem dataItem = (GridDataItem)e.Item;
if (e.Exception != null)
{
e.ExceptionHandled = true;
}
}
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
{
if (_resources == null || _culture == null) GetInfo();
GridCommandItem item = e.Item as GridCommandItem;
if (item != null)
{
((Label)item.FindControl("lblQuickAdd")).Text = _resources.GetString("lblQuickAdd", new CultureInfo(_culture));
((Label)item.FindControl("lblFullAdd")).Text = _resources.GetString("lblFullAdd", new CultureInfo(_culture));
}
if (e.Item is GridDataItem)
{
if (e.Item.ItemIndex < 0) return;
ImageButton editLink = (ImageButton)e.Item.FindControl("EditLink");
editLink.AlternateText = _resources.GetString(editLink.ID, new CultureInfo(_culture));
editLink.Attributes["href"] = "#";
editLink.Attributes["onclick"] = String.Format("return ShowEditForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"], e.Item.ItemIndex);
}
/*validations*/
if ((e.Item is GridEditableItem && e.Item.IsInEditMode) )
{
for (int i =2; i < RadGrid1.MasterTableView.Columns.Count; i++ )
{
if (RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "firstname" ||
RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "lastname" ||
RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "loginid" ||
RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "email")
AddRequiredValidator(RadGrid1.MasterTableView.Columns[i].UniqueName, e);
if (RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "email" ||
RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "loginid")
AddCustomValidator(RadGrid1.MasterTableView.Columns[i].UniqueName, e);
if (RadGrid1.MasterTableView.Columns[i].IsEditable && RadGrid1.MasterTableView.Columns[i].UniqueName.ToLower() == "email")
AddExpressRegularEmail(RadGrid1.MasterTableView.Columns[i].UniqueName, e);
}
}
if (e.Item is GridDataItem && e.Item.IsInEditMode)
{
GridDataItem itemc = (GridDataItem)e.Item;
CheckBox chkbox = (CheckBox)itemc["IsSuper"].Controls[0];
chkbox.Enabled = true;
}
}
protected void RadGrid1_ItemCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
{
if (e.CommandName == RadGrid.EditCommandName)
{
Session["ID"] = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"];
}
if (e.CommandName == RadGrid.InitInsertCommandName) //"Quick add new" button clicked
{
GridTemplateColumn fulledit = (GridTemplateColumn)RadGrid1.MasterTableView.GetColumn("TemplateEditColumn");
fulledit.Visible = false;
}
else if (e.CommandName == RadGrid.RebindGridCommandName && e.Item.OwnerTableView.IsItemInserted)
{
e.Canceled = true;
}
else
{
GridTemplateColumn fulledit = (GridTemplateColumn)RadGrid1.MasterTableView.GetColumn("TemplateEditColumn");
if (!fulledit.Visible)
fulledit.Visible = true;
}
}
protected void cvLoginId_ServerValidate(object sender, ServerValidateEventArgs e)
{
_organization = new Organization();
e.IsValid = !_organization.ExistLogin(e.Value.ToString(), GetId());
}
protected void cvEmail_ServerValidate(object sender, ServerValidateEventArgs e)
{
_organization = new Organization();
e.IsValid = !_organization.ExistEmail(e.Value.ToString(), GetId());
}
#endregion
#region Methods
private void AddCustomValidator(string colName, GridItemEventArgs e)
{
GridEditableItem itemEditable = e.Item as GridEditableItem;
if (itemEditable != null)
{
GridTextBoxColumnEditor editor = (GridTextBoxColumnEditor)itemEditable.EditManager.GetColumnEditor(colName);
TableCell cell = (TableCell)editor.TextBoxControl.Parent;
CustomValidator validator = new CustomValidator();
editor.TextBoxControl.ID = colName;
validator.ControlToValidate = editor.TextBoxControl.ID;
validator.CssClass = "validator";
validator.Display = ValidatorDisplay.Dynamic;
validator.ErrorMessage = _resources.GetString("cv"+colName, new CultureInfo(_culture));
if (colName.ToLower() == "email")
validator.ServerValidate += cvEmail_ServerValidate;
if (colName.ToLower() == "loginid")
validator.ServerValidate += cvLoginId_ServerValidate;
cell.Controls.Add(validator);
}
}
private int GetId()
{
return Convert.ToInt16(Session["ID"] ?? 0);
}
private void AddExpressRegularEmail(string colName, GridItemEventArgs e){
GridEditableItem itemEditable = e.Item as GridEditableItem;
if (itemEditable != null)
{
GridTextBoxColumnEditor editor = (GridTextBoxColumnEditor)itemEditable.EditManager.GetColumnEditor(colName);
TableCell cell = (TableCell)editor.TextBoxControl.Parent;
RegularExpressionValidator validator = new RegularExpressionValidator();
editor.TextBoxControl.ID = colName;
validator.ControlToValidate = editor.TextBoxControl.ID;
validator.CssClass = "validator";
validator.Display = ValidatorDisplay.Dynamic;
validator.ErrorMessage = _resources.GetString("revEmail", new CultureInfo(_culture));
validator.ValidationExpression = @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$";
cell.Controls.Add(validator);
}
}
private void AddRequiredValidator( string colName, GridItemEventArgs e)
{
GridEditableItem itemEditable = e.Item as GridEditableItem;
if (itemEditable == null) return;
GridTextBoxColumnEditor editor = (GridTextBoxColumnEditor)itemEditable.EditManager.GetColumnEditor(colName);
TableCell cell = (TableCell)editor.TextBoxControl.Parent;
RequiredFieldValidator validator = new RequiredFieldValidator();
editor.TextBoxControl.ID = colName;
validator.ControlToValidate = editor.TextBoxControl.ID;
validator.CssClass = "validator";
validator.Display = ValidatorDisplay.Dynamic;
validator.ErrorMessage = "*";
cell.Controls.Add(validator);
}
private void LoadData()
{
_organization = new Organization();
try
{
RadGrid1.DataSource = _organization.GetUsersOfOrganization();
}
catch (Exception ex)
{
WriterLog.WriterinlogFil(ex);
throw new Exception(ex.ToString());
}
}
private void LoadSettings()
{
if (_resources == null || _culture == null) GetInfo();
RadGrid1.MasterTableView.EditFormSettings.InsertCaption = _resources.GetString("insertCaption", new CultureInfo(_culture));
string type = Request.QueryString["Type"] ;
if (string.IsNullOrEmpty(type)) type = "List";
SetTitle("lblTitileList");
RadGrid1.MasterTableView.GetColumnSafe("FirstName").HeaderText = _resources.GetString("lblFirstName", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("MiddleName").HeaderText = _resources.GetString("lblMiddleName", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("LastName").HeaderText = _resources.GetString("lblLastName", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("CellPhone").HeaderText = _resources.GetString("lblCellPhone", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("Phone").HeaderText = _resources.GetString("lblPhone", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("Address").HeaderText = _resources.GetString("lblAddress", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("Email").HeaderText = _resources.GetString("lblEmail", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("ExternalId").HeaderText = _resources.GetString("lblExternalId", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("LoginId").HeaderText = _resources.GetString("lblLoginId", new CultureInfo(_culture));
RadGrid1.MasterTableView.GetColumnSafe("IsSuper").HeaderText = _resources.GetString("IsSuper", new CultureInfo(_culture));
RadGrid1.MasterTableView.EditFormSettings.CaptionFormatString = _resources.GetString("captionFormatString", new CultureInfo(_culture));
// RadGrid1.ClientSettings.EnablePostBackOnRowClick = true;
RadGrid1.ClientSettings.AllowColumnsReorder = true;
RadGrid1.ClientSettings.ReorderColumnsOnClient = true;
RadGrid1.ClientSettings.ColumnsReorderMethod = GridClientSettings.GridColumnsReorderMethod.Swap;
RadGrid1.ClientSettings.AllowColumnHide = true;
RadGrid1.ClientSettings.Resizing.AllowColumnResize = false;
RadGrid1.ClientSettings.Resizing.AllowResizeToFit = true;
RadGrid1.ClientSettings.Resizing.EnableRealTimeResize = true;
RadGrid1.ClientSettings.Resizing.ResizeGridOnColumnResize = true;
RadGrid1.ClientSettings.Resizing.AllowColumnResize = true;
RadGrid1.ClientSettings.Resizing.ClipCellContentOnResize = true;
RadGrid1.Culture = new CultureInfo(_culture);
GridButtonColumn btndelete = (GridButtonColumn)RadGrid1.Columns.FindByUniqueName("btnDelete");
btndelete.ConfirmText = _resources.GetString("confirmText", new CultureInfo(_culture));
btndelete.ConfirmTitle = _resources.GetString("confirmTitle", new CultureInfo(_culture));
switch (type)
{
case "New":
UserListDialog.NavigateUrl = "UserForm.aspx";
UserListDialog.VisibleOnPageLoad = true;
break;
}
}
private void SetTitle(string resx)
{
if (_resources == null || _culture == null) GetInfo();
if (resx != null)
lblTitle.Text = _resources.GetString(resx, new CultureInfo(_culture));
}
private void GetInfo()
{
_culture = App.CurrentCulture();
_resources = App.GetAdminResources("UserManagement");
}
#endregion
}
}
Regards