Having trouble with RadGrid, My GridDropDownColumn data is loaded dynamically on itemdatabound but when you change the selected item or update the grid which causes an error then all the values disappear. Have tried several ways to stop this happening but nothing appears to be working
<
asp:Content
ID
=
"Content2"
ContentPlaceHolderID
=
"ContentMain"
Runat
=
"Server"
>
<
div
class
=
"twocol"
>
<
div
class
=
"colfull"
>
<
div
class
=
"panel"
>
<
asp:Panel
ID
=
"RefinePanel"
runat
=
"server"
>
<
span
>Global:</
span
>
<
asp:DropDownList
runat
=
"server"
ID
=
"GlobalDropDown"
OnSelectedIndexChanged
=
"Global_Change"
OnPreRender
=
"Global_Load"
AutoPostBack
=
"true"
>
<
asp:ListItem
Value
=
"1"
>Global</
asp:ListItem
>
<
asp:ListItem
Value
=
"0"
>Non-Global</
asp:ListItem
>
<
asp:ListItem
Value
=
"2"
>All</
asp:ListItem
>
</
asp:DropDownList
>
<
span
>ReadOnly:</
span
>
<
asp:DropDownList
runat
=
"server"
ID
=
"ReadOnlyDropDown"
OnSelectedIndexChanged
=
"ReadOnly_Change"
OnPreRender
=
"ReadOnly_Load"
AutoPostBack
=
"true"
>
<
asp:ListItem
Value
=
"0"
>Editable</
asp:ListItem
>
<
asp:ListItem
Value
=
"1"
>Read Only</
asp:ListItem
>
<
asp:ListItem
Value
=
"2"
>All</
asp:ListItem
>
</
asp:DropDownList
>
</
asp:Panel
>
</
div
>
</
div
>
</
div
>
<
div
class
=
"twocol"
>
<
div
class
=
"cole"
>
<
div
class
=
"panel"
>
<
asp:ValidationSummary
runat
=
"server"
ID
=
"AttributeValidationSummary"
DisplayMode
=
"BulletList"
HeaderText
=
"Error(s)"
ValidationGroup
=
"Attribute"
CssClass
=
"validationSummary"
/>
<
telerik:RadGrid
ID
=
"AttributeGrid"
runat
=
"server"
Width
=
"100%"
AllowPaging
=
"true"
PageSize
=
"20"
AllowMultiRowEdit
=
"false"
AllowMultiRowSelection
=
"false"
AutoGenerateColumns
=
"False"
EnableLinqExpressions
=
"false"
GridLines
=
"None"
OnItemCreated
=
"AttributeGrid_ItemCreated"
OnSelectedIndexChanged
=
"AttributeGrid_SelectedIndexChanged"
OnItemDataBound
=
"AttributeGrid_ItemDataBound"
OnNeedDataSource
=
"AttributeGrid_NeedDataSource"
OnDeleteCommand
=
"AttributeGrid_DeleteCommand"
OnInsertCommand
=
"AttributeGrid_InsertCommand"
OnUpdateCommand
=
"AttributeGrid_UpdateCommand"
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
/>
<
MasterTableView
AutoGenerateColumns
=
"false"
DataKeyNames
=
"ProductAttributeDefKey"
InsertItemDisplay
=
"Bottom"
CommandItemDisplay
=
"Bottom"
EditMode
=
"InPlace"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"ProductAttributeDefKey"
HeaderText
=
"Definition Key"
SortExpression
=
"ProductAttributeDefKey"
UniqueName
=
"ProductAttributeDefKey"
>
<
ItemStyle
CssClass
=
"textColumn"
/>
<
HeaderStyle
CssClass
=
"textColumn"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"ProductAttributeDefKey"
HeaderText
=
"ProductAttributeDefKeyOri"
SortExpression
=
"ProductAttributeDefKeyOri"
UniqueName
=
"ProductAttributeDefKeyOri"
ReadOnly
=
"true"
ForceExtractValue
=
"Always"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Name"
HeaderText
=
"Name"
SortExpression
=
"Name"
UniqueName
=
"Name"
>
<
ItemStyle
CssClass
=
"textColumn"
/>
<
HeaderStyle
CssClass
=
"textColumn"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridDropDownColumn
HeaderText
=
"Data Type"
DataField
=
"AttributeDataType"
UniqueName
=
"AttributeDataType"
DropDownControlType
=
"DropDownList"
>
<
ItemStyle
CssClass
=
"dropColumn"
/>
<
HeaderStyle
CssClass
=
"dropColumn"
/>
</
telerik:GridDropDownColumn
>
<
telerik:GridBoundColumn
DataField
=
"ImageIcon"
HeaderText
=
"Icon"
SortExpression
=
"ImageIcon"
UniqueName
=
"ImageIcon"
>
<
ItemStyle
CssClass
=
"textColumn"
/>
<
HeaderStyle
CssClass
=
"textColumn"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridCheckBoxColumn
DataField
=
"IsGlobal"
HeaderText
=
"Global"
SortExpression
=
"IsGlobal"
UniqueName
=
"IsGlobal"
>
<
ItemStyle
CssClass
=
"checkColumn"
/>
<
HeaderStyle
CssClass
=
"checkColumn"
/>
</
telerik:GridCheckBoxColumn
>
<
telerik:GridCheckBoxColumn
DataField
=
"IsReadOnly"
HeaderText
=
"Read Only"
SortExpression
=
"IsReadOnly"
UniqueName
=
"IsReadOnly"
ReadOnly
=
"true"
ForceExtractValue
=
"Always"
>
<
ItemStyle
CssClass
=
"checkColumn"
/>
<
HeaderStyle
CssClass
=
"checkColumn"
/>
</
telerik:GridCheckBoxColumn
>
<
telerik:GridCheckBoxColumn
DataField
=
"IsStyle"
HeaderText
=
"Style"
SortExpression
=
"IsStyle"
UniqueName
=
"IsStyle"
>
<
ItemStyle
CssClass
=
"checkColumn"
/>
<
HeaderStyle
CssClass
=
"checkColumn"
/>
</
telerik:GridCheckBoxColumn
>
<
telerik:GridCheckBoxColumn
DataField
=
"PluOnly"
HeaderText
=
"PLU Only"
SortExpression
=
"PluOnly"
UniqueName
=
"PluOnly"
>
<
ItemStyle
CssClass
=
"checkColumn"
/>
<
HeaderStyle
CssClass
=
"checkColumn"
/>
</
telerik:GridCheckBoxColumn
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn"
>
<
ItemStyle
CssClass
=
"editColumn"
/>
<
HeaderStyle
CssClass
=
"editColumn"
/>
</
telerik:GridEditCommandColumn
>
</
Columns
>
<
EditFormSettings
>
<
EditColumn
ButtonType
=
"ImageButton"
/>
</
EditFormSettings
>
</
MasterTableView
>
<
ValidationSettings
CommandsToValidate
=
"PerformInsert,Update"
ValidationGroup
=
"Attribute"
EnableModelValidation
=
"true"
/>
<
ClientSettings
EnablePostBackOnRowClick
=
"true"
>
<
Selecting
AllowRowSelect
=
"True"
/>
</
ClientSettings
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
PageButtonCount
=
"5"
HorizontalAlign
=
"Center"
Width
=
"100%"
ShowPagerText
=
"true"
/>
</
telerik:RadGrid
>
<
telerik:GridCheckBoxColumnEditor
ID
=
"GridCheckBoxColumnEditor1"
runat
=
"server"
CheckBoxStyle-BorderWidth
=
"1"
/>
</
div
>
</
div
>
<
div
class
=
"colf"
>
<
asp:Panel
runat
=
"server"
ID
=
"LookupPanel"
CssClass
=
"panel"
Visible
=
"false"
>
<
h2
runat
=
"server"
id
=
"LookupTitle"
>Users</
h2
>
<
p
>Click a lookup attribute view/edit look up values</
p
>
<
asp:ValidationSummary
runat
=
"server"
ID
=
"LookupValidationSummary"
DisplayMode
=
"BulletList"
HeaderText
=
"Error(s)"
ValidationGroup
=
"LookupValidation"
CssClass
=
"validationSummary"
/>
<
asp:TextBox
runat
=
"server"
ID
=
"DefKey"
TextMode
=
"SingleLine"
Visible
=
"false"
></
asp:TextBox
>
<
telerik:RadGrid
ID
=
"LookupGrid"
runat
=
"server"
Width
=
"100%"
AllowPaging
=
"false"
AllowMultiRowEdit
=
"false"
AllowMultiRowSelection
=
"false"
AutoGenerateColumns
=
"false"
EnableLinqExpressions
=
"false"
GridLines
=
"None"
PageSize
=
"50"
OnItemCreated
=
"LookupGrid_ItemCreated"
OnItemDataBound
=
"LookupGrid_ItemDataBound"
OnItemCommand
=
"LookupGrid_ItemCommand"
OnNeedDataSource
=
"LookupGrid_NeedDataSource"
OnDeleteCommand
=
"LookupGrid_DeleteCommand"
OnInsertCommand
=
"LookupGrid_InsertCommand"
OnUpdateCommand
=
"LookupGrid_UpdateCommand"
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
/>
<
MasterTableView
Width
=
"100%"
InsertItemDisplay
=
"Bottom"
DataKeyNames
=
"ProductAttributeLookupId,ProductAttributeDefKey"
CommandItemDisplay
=
"Bottom"
EditMode
=
"InPlace"
AutoGenerateColumns
=
"false"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"ProductAttributeLookupId"
HeaderText
=
"ProductAttributeLookupId"
SortExpression
=
"ProductAttributeLookupId"
UniqueName
=
"ProductAttributeLookupId"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"ProductAttributeDefKey"
HeaderText
=
"ProductAttributeDefKey"
SortExpression
=
"ProductAttributeDefKey"
UniqueName
=
"ProductAttributeDefKey"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"VarcharValue"
HeaderText
=
"Value"
SortExpression
=
"VarcharValue"
UniqueName
=
"VarcharValue"
>
</
telerik:GridBoundColumn
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn"
>
<
ItemStyle
CssClass
=
"editColumn"
/>
<
HeaderStyle
CssClass
=
"editColumn"
/>
</
telerik:GridEditCommandColumn
>
<
telerik:GridButtonColumn
ConfirmText
=
"Delete Value?"
ButtonType
=
"ImageButton"
CommandName
=
"Delete"
Text
=
"Delete"
UniqueName
=
"DeleteColumn"
>
<
HeaderStyle
Width
=
"20px"
/>
<
ItemStyle
HorizontalAlign
=
"Center"
CssClass
=
"MyImageButton"
/>
</
telerik:GridButtonColumn
>
</
Columns
>
<
NoRecordsTemplate
>
<
p
class
=
"center"
>No Values Found</
p
>
</
NoRecordsTemplate
>
<
EditFormSettings
CaptionFormatString
=
"Edit Value"
InsertCaption
=
"Add Value"
>
<
FormTableAlternatingItemStyle
Wrap
=
"False"
></
FormTableAlternatingItemStyle
>
<
EditColumn
ButtonType
=
"ImageButton"
InsertText
=
"Add Value"
UpdateText
=
"Edit Value"
UniqueName
=
"EditCommandColumn"
CancelText
=
"Cancel Edit"
></
EditColumn
>
<
FormTableButtonRowStyle
HorizontalAlign
=
"Right"
CssClass
=
"EditFormButtonRow"
></
FormTableButtonRowStyle
>
</
EditFormSettings
>
<
CommandItemSettings
AddNewRecordText
=
"Add Value"
/>
</
MasterTableView
>
<
ValidationSettings
CommandsToValidate
=
"PerformInsert,Update"
ValidationGroup
=
"LookupValidation"
/>
</
telerik:RadGrid
>
</
asp:Panel
>
</
div
>
</
div
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"AttributeGrid"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"AttributeGrid"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"LookupPanel"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"LookupGrid"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"LookupGrid"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
</
asp:Content
>
using
System;
using
System.Collections;
using
System.ComponentModel;
using
System.Data;
using
System.Data.SqlClient;
using
System.Drawing;
using
System.Web;
using
System.Web.SessionState;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.HtmlControls;
using
System.Collections.Generic;
using
Telerik.Web.UI;
using
System.Text.RegularExpressions;
using
JD.Common.Pim.DAL;
using
JD.Common.Pim.DAL.DatabaseSpecific;
using
JD.Common.Pim.DAL.EntityClasses;
using
JD.Common.Pim.DAL.HelperClasses;
using
JD.Common.Pim.DAL.FactoryClasses;
using
SD.LLBLGen.Pro.ORMSupportClasses;
using
System.Collections.Specialized;
namespace
JD.FeedManager.Pim.Website.Admin
{
public
partial
class
AttributeEditor : System.Web.UI.Page
{
static
ConfigHandler commonConfig = ConfigUtils.GetConfig();
DataAccessAdapter sqlAdapter = commonConfig.PimConfig.DBAdapter();
Boolean writePermissions =
false
;
Boolean? showGlobal =
null
;
//default show all
Boolean? showReadOnly =
false
;
//default show editable
protected
void
Page_Load(
object
source, EventArgs e)
{
Options_Load();
writePermissions = PIMSession.Current.Write;
Permissions_Load();
if
(!IsPostBack)
{
}
}
protected
void
Page_LoadComplete(
object
source, EventArgs e)
{
}
protected
void
Options_Load()
{
Int32 showGlobalTemp;
if
(Int32.TryParse(Request[
"glo"
],
out
showGlobalTemp))
{
if
(showGlobalTemp == 0)
{
showGlobal =
false
;
}
else
if
(showGlobalTemp == 1)
{
showGlobal =
true
;
}
else
if
(showGlobalTemp == 2)
{
showGlobal =
null
;
}
}
Int32 showReadOnlyTemp;
if
(Int32.TryParse(Request[
"rdo"
],
out
showReadOnlyTemp))
{
if
(showReadOnlyTemp == 0)
{
showReadOnly =
false
;
}
else
if
(showReadOnlyTemp == 1)
{
showReadOnly =
true
;
}
else
if
(showReadOnlyTemp == 2)
{
showReadOnly =
null
;
}
}
}
protected
void
Permissions_Load()
{
if
(!writePermissions)
{
AttributeGrid.Columns.FindByUniqueName(
"EditCommandColumn"
).Visible =
false
;
//AttributeGrid.Columns.FindByUniqueName("DeleteColumn").Visible = false;
AttributeGrid.MasterTableView.CommandItemDisplay = Telerik.Web.UI.GridCommandItemDisplay.None;
}
}
protected
void
ReadOnly_Load(
object
source, EventArgs e)
{
if
(showReadOnly ==
false
)
{
ReadOnlyDropDown.SelectedValue =
"0"
;
}
else
if
(showReadOnly ==
true
)
{
ReadOnlyDropDown.SelectedValue =
"1"
;
}
else
if
(showReadOnly ==
null
)
{
ReadOnlyDropDown.SelectedValue =
"2"
;
}
}
protected
void
ReadOnly_Change(
object
source, EventArgs e)
{
DropDownList dropdown = (DropDownList)source;
Int32 show = Convert.ToInt32(dropdown.SelectedValue);
NameValueCollection parameters =
new
NameValueCollection(Request.QueryString);
parameters.Remove(
"rdo"
);
parameters.Set(
"rdo"
, Convert.ToString(show));
Response.Redirect(Request.Url.AbsolutePath +
"?"
+ General.ConstructQueryString(parameters));
}
protected
void
Global_Load(
object
source, EventArgs e)
{
if
(showGlobal ==
false
)
{
GlobalDropDown.SelectedValue =
"0"
;
}
else
if
(showGlobal ==
true
)
{
GlobalDropDown.SelectedValue =
"1"
;
}
else
if
(showGlobal ==
null
)
{
GlobalDropDown.SelectedValue =
"2"
;
}
}
protected
void
Global_Change(
object
source, EventArgs e)
{
DropDownList dropdown = (DropDownList)source;
Int32 show = Convert.ToInt32(dropdown.SelectedValue);
NameValueCollection parameters =
new
NameValueCollection(Request.QueryString);
parameters.Remove(
"glo"
);
parameters.Set(
"glo"
, Convert.ToString(show));
Response.Redirect(Request.Url.AbsolutePath +
"?"
+ General.ConstructQueryString(parameters));
}
protected
void
AttributeGrid_NeedDataSource(
object
source, GridNeedDataSourceEventArgs e)
{
RadGrid grid = source
as
RadGrid;
grid.DataSource = RetrievalProcedures.ProcProductAttributeDefSelect(showGlobal, showReadOnly, sqlAdapter);
}
protected
void
AttributeGrid_DeleteCommand(
object
source, Telerik.Web.UI.GridCommandEventArgs e)
{
GridDataItem item = (GridDataItem)e.Item;
try
{
String productAttributeDefKey = Convert.ToString(item.OwnerTableView.DataKeyValues[item.ItemIndex][
"ProductAttributeDefKey"
]);
if
(writePermissions)
{
ActionProcedures.ProcProductAttributeDefDelete(productAttributeDefKey, sqlAdapter);
}
}
catch
(Exception ex)
{
AttributeGrid.Controls.Add(
new
LiteralControl(
"Unable to delete attribute. Reason: "
+ ex.Message));
e.Canceled =
true
;
}
}
protected
void
AttributeGrid_UpdateCommand(
object
source, Telerik.Web.UI.GridCommandEventArgs e)
{
GridEditableItem editedItem = e.Item
as
GridEditableItem;
try
{
String productAttributeDefKey = (editedItem[
"ProductAttributeDefKey"
].Controls[0]
as
TextBox).Text;
String productAttributeDefKeyOri = (editedItem[
"ProductAttributeDefKeyOri"
].Controls[0]
as
TextBox).Text;
String name = (editedItem[
"Name"
].Controls[0]
as
TextBox).Text;
Int32 attributeDataType = Convert.ToInt32((editedItem[
"AttributeDataType"
].Controls[0]
as
DropDownList).SelectedValue);
String imageIcon = (editedItem[
"ImageIcon"
].Controls[0]
as
TextBox).Text;
Boolean global = (editedItem[
"IsGlobal"
].Controls[0]
as
CheckBox).Checked;
Boolean readOnly = (editedItem[
"IsReadOnly"
].Controls[0]
as
CheckBox).Checked;
Boolean style = (editedItem[
"IsStyle"
].Controls[0]
as
CheckBox).Checked;
Boolean pluOnly = (editedItem[
"PluOnly"
].Controls[0]
as
CheckBox).Checked;
if
(writePermissions)
{
ActionProcedures.ProcProductAttributeDefUpdate(productAttributeDefKey, productAttributeDefKeyOri, name, attributeDataType, imageIcon, global, readOnly, style, pluOnly, sqlAdapter);
}
}
catch
(Exception ex)
{
AttributeGrid.Controls.Add(
new
LiteralControl(
"Unable to update attribute. Reason: "
+ ex.Message));
e.Canceled =
true
;
}
}
protected
void
AttributeGrid_InsertCommand(
object
source, Telerik.Web.UI.GridCommandEventArgs e)
{
GridDataInsertItem insertedItem = (GridDataInsertItem)e.Item;
try
{
String productAttributeDefKey = (insertedItem[
"ProductAttributeDefKey"
].Controls[0]
as
TextBox).Text;
String name = (insertedItem[
"Name"
].Controls[0]
as
TextBox).Text;
Int32 attributeDataType = Convert.ToInt32((insertedItem[
"AttributeDataType"
].Controls[0]
as
DropDownList).SelectedValue);
String imageIcon = (insertedItem[
"ImageIcon"
].Controls[0]
as
TextBox).Text;
Boolean global = (insertedItem[
"IsGlobal"
].Controls[0]
as
CheckBox).Checked;
Boolean readOnly = (insertedItem[
"IsReadOnly"
].Controls[0]
as
CheckBox).Checked;
Boolean style = (insertedItem[
"IsStyle"
].Controls[0]
as
CheckBox).Checked;
Boolean pluOnly = (insertedItem[
"PluOnly"
].Controls[0]
as
CheckBox).Checked;
if
(writePermissions)
{
ActionProcedures.ProcProductAttributeDefInsert(productAttributeDefKey, name, attributeDataType, imageIcon, global, readOnly, style, pluOnly, sqlAdapter);
}
}
catch
(Exception ex)
{
AttributeGrid.Controls.Add(
new
LiteralControl(
"Unable to insert attribute. Reason: "
+ ex.Message));
e.Canceled =
true
;
}
}
protected
void
AttributeGrid_SelectedIndexChanged(
object
source, EventArgs e)
{
var dataItem = AttributeGrid.SelectedItems[0]
as
GridDataItem;
LookupPanel.Visible =
false
;
LookupTitle.InnerText =
"Lookup Values"
;
if
(dataItem !=
null
)
{
//get name and id
var id = dataItem[
"ProductAttributeDefKey"
].Text;
var name = dataItem[
"Name"
].Text;
var datatype = dataItem[
"AttributeDataType"
].Text;
if
(datatype ==
"Lookup List"
)
{
if
(!String.IsNullOrWhiteSpace(name))
{
LookupTitle.InnerText =
"Lookup Values ("
+ name +
")"
;
}
LookupPanel.Visible =
true
;
DefKey.Text = Convert.ToString(id);
}
else
{
DefKey.Text = Convert.ToString(id);
}
LookupGrid.Rebind();
//data type display fix
Int32 selectedIndex = Convert.ToInt32(AttributeGrid.SelectedIndexes[0]);
AttributeGrid.Rebind();
AttributeGrid.MasterTableView.Items[selectedIndex].Selected =
true
;
}
}
protected
void
AttributeGrid_ItemCreated(
object
source, Telerik.Web.UI.GridItemEventArgs e)
{
if
(e.Item
is
GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem item = e.Item
as
GridEditableItem;
GridTextBoxColumnEditor editor1 = (GridTextBoxColumnEditor)item.EditManager.GetColumnEditor(
"Name"
);
editor1.TextBoxControl.ID =
"ID1_for_validation"
;
GridTextBoxColumnEditor editor2 = (GridTextBoxColumnEditor)item.EditManager.GetColumnEditor(
"ProductAttributeDefKey"
);
editor2.TextBoxControl.ID =
"ID2_for_validation"
;
GridDropDownColumnEditor editor3 = (GridDropDownColumnEditor)item.EditManager.GetColumnEditor(
"AttributeDataType"
);
//String currDefKey = (String)item.GetDataKeyValue("ProductAttributeDefKey");
//Name Validation
TableCell cell1 = (TableCell)editor1.TextBoxControl.Parent;
RequiredFieldValidator validator1 =
new
RequiredFieldValidator();
validator1.ControlToValidate = editor1.TextBoxControl.ID;
validator1.ErrorMessage =
"Name Required"
;
validator1.Text =
"*"
;
validator1.ValidationGroup =
"Attribute"
;
cell1.Controls.Add(validator1);
RadAjaxManager1.AjaxSettings.AddAjaxSetting(validator1, AttributeGrid);
//Definition Key Validation
TableCell cell2 = (TableCell)editor2.TextBoxControl.Parent;
RequiredFieldValidator validator2 =
new
RequiredFieldValidator();
validator2.ControlToValidate = editor2.TextBoxControl.ID;
validator2.ErrorMessage =
"Definition Key Required"
;
validator2.Text =
"*"
;
validator2.ValidationGroup =
"Attribute"
;
cell2.Controls.Add(validator2);
RadAjaxManager1.AjaxSettings.AddAjaxSetting(validator2, AttributeGrid);
//Data Type Validation
DropDownList dropDownList1 = item[
"AttributeDataType"
].Controls[0]
as
DropDownList;
TableCell cell3 = (TableCell)editor3.ContainerControl;
RequiredFieldValidator validator3 =
new
RequiredFieldValidator();
validator3.ControlToValidate = dropDownList1.ID;
validator3.ErrorMessage =
"Data Type Required"
;
validator3.Text =
"*"
;
validator3.ValidationGroup =
"Attribute"
;
cell3.Controls.Add(validator3);
RadAjaxManager1.AjaxSettings.AddAjaxSetting(validator3, AttributeGrid);
}
}
protected
void
AttributeGrid_ItemDataBound(
object
source, GridItemEventArgs e)
{
if
(e.Item.IsInEditMode && e.Item
is
GridEditableItem)
{
GridEditableItem editItem = e.Item
as
GridEditableItem;
GridEditManager editMgr = editItem.EditManager;
GridDropDownListColumnEditor typeEditor = editMgr.GetColumnEditor(
"AttributeDataType"
)
as
GridDropDownListColumnEditor;
typeEditor.DataSource = AttributeDataTypes.GetTypes();
typeEditor.DataTextField =
"Name"
;
typeEditor.DataValueField =
"Id"
;
typeEditor.DataBind();
DropDownList ddList = typeEditor.DropDownListControl;
ddList.Items.Insert(0,
new
ListItem(
"Select a data type..."
,
""
));
string
s = DataBinder.Eval(editItem.DataItem,
"AttributeDataType"
).ToString();
typeEditor.SelectedValue = s;
if
(e.Item
is
GridDataInsertItem)
{
ImageButton InsertButton = (ImageButton)editItem.FindControl(
"PerformInsertButton"
);
InsertButton.ValidationGroup =
"Attribute"
;
InsertButton.CausesValidation =
true
;
}
else
{
//disable drop down in edit mode
typeEditor.DropDownListControl.Enabled =
false
;
ImageButton updateButton = (ImageButton)editItem.FindControl(
"UpdateButton"
);
updateButton.ValidationGroup =
"Attribute"
;
updateButton.CausesValidation =
true
;
}
}
if
((e.Item
is
GridDataItem) && !e.Item.IsInEditMode)
{
//disable and hide edit/delete buttons if read only attribute
Boolean readOnly = (Boolean)DataBinder.Eval(e.Item.DataItem,
"IsReadOnly"
);
if
(readOnly) { readOnly =
false
; }
else
{ readOnly =
true
; }
GridDataItem item = (GridDataItem)e.Item;
((ImageButton)item[
"EditCommandColumn"
].Controls[0]).Enabled = readOnly;
((ImageButton)item[
"EditCommandColumn"
].Controls[0]).Visible = readOnly;
foreach
(DataRow row
in
AttributeDataTypes.GetTypes().Rows)
{
if
((Int32)row[
"Id"
] == (Int32)DataBinder.Eval(e.Item.DataItem,
"AttributeDataType"
))
{
item[
"AttributeDataType"
].Text = (String)row[
"Name"
];
}
}
}
}
protected
void
LookupGrid_NeedDataSource(
object
source, GridNeedDataSourceEventArgs e)
{
RadGrid grid = source
as
RadGrid;
String defKey =
null
;
if
(!String.IsNullOrWhiteSpace(DefKey.Text))
{
defKey = DefKey.Text;
}
if
(!String.IsNullOrWhiteSpace(defKey))
{
grid.DataSource = RetrievalProcedures.ProcProductAttributeLookupSelect(defKey, sqlAdapter);
}
}
protected
void
LookupGrid_DeleteCommand(
object
source, Telerik.Web.UI.GridCommandEventArgs e)
{
GridDataItem item = (GridDataItem)e.Item;
try
{
Int32 productAttributeLookupId = Convert.ToInt32(item.OwnerTableView.DataKeyValues[item.ItemIndex][
"ProductAttributeLookupId"
]);
if
(writePermissions)
{
ActionProcedures.ProcProductAttributeLookupDelete(productAttributeLookupId, sqlAdapter);
}
}
catch
(Exception ex)
{
LookupGrid.Controls.Add(
new
LiteralControl(
"Unable to delete value. Reason: "
+ ex.Message));
e.Canceled =
true
;
}
}
protected
void
LookupGrid_UpdateCommand(
object
source, Telerik.Web.UI.GridCommandEventArgs e)
{
GridEditableItem editedItem = e.Item
as
GridEditableItem;
try
{
Int32 productAttributeLookupId = Convert.ToInt32(editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex][
"ProductAttributeLookupId"
]);
String varcharValue = (editedItem[
"VarcharValue"
].Controls[0]
as
TextBox).Text;
if
(writePermissions)
{
ActionProcedures.ProcProductAttributeLookupUpdate(varcharValue, productAttributeLookupId, sqlAdapter);
}
}
catch
(Exception ex)
{
LookupGrid.Controls.Add(
new
LiteralControl(
"Unable to update value. Reason: "
+ ex.Message));
e.Canceled =
true
;
}
}
protected
void
LookupGrid_InsertCommand(
object
source, Telerik.Web.UI.GridCommandEventArgs e)
{
GridDataInsertItem insertedItem = (GridDataInsertItem)e.Item;
try
{
String productAttributeDefKey = Convert.ToString((insertedItem[
"ProductAttributeDefKey"
].Controls[0]
as
TextBox).Text);
String varcharValue = Convert.ToString((insertedItem[
"VarcharValue"
].Controls[0]
as
TextBox).Text);
if
(writePermissions)
{
ActionProcedures.ProcProductAttributeLookupInsert(productAttributeDefKey, varcharValue, sqlAdapter);
}
}
catch
(Exception ex)
{
LookupGrid.Controls.Add(
new
LiteralControl(
"Unable to insert value. Reason: "
+ ex.Message));
e.Canceled =
true
;
}
}
protected
void
LookupGrid_ItemDataBound(
object
source, GridItemEventArgs e)
{
if
(e.Item.IsInEditMode && e.Item
is
GridEditableItem)
{
if
(e.Item
is
GridDataInsertItem)
{
GridEditableItem editItem = (GridEditableItem)e.Item;
ImageButton InsertButton = (ImageButton)editItem.FindControl(
"PerformInsertButton"
);
InsertButton.ValidationGroup =
"LookupValidation"
;
InsertButton.CausesValidation =
true
;
}
else
{
GridEditableItem editItem = (GridEditableItem)e.Item;
ImageButton updateButton = (ImageButton)editItem.FindControl(
"UpdateButton"
);
updateButton.ValidationGroup =
"LookupValidation"
;
updateButton.CausesValidation =
true
;
}
}
}
protected
void
LookupGrid_ItemCreated(
object
source, Telerik.Web.UI.GridItemEventArgs e)
{
if
(e.Item
is
GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem item = e.Item
as
GridEditableItem;
//Name Validation
GridTextBoxColumnEditor editor1 = (GridTextBoxColumnEditor)item.EditManager.GetColumnEditor(
"VarcharValue"
);
TableCell cell1 = (TableCell)editor1.TextBoxControl.Parent;
RequiredFieldValidator validator1 =
new
RequiredFieldValidator();
editor1.TextBoxControl.ID =
"ID1_for_validation"
;
validator1.ControlToValidate = editor1.TextBoxControl.ID;
validator1.ErrorMessage =
"Value Required"
;
validator1.Text =
"*"
;
validator1.ValidationGroup =
"LookupValidation"
;
cell1.Controls.Add(validator1);
RadAjaxManager1.AjaxSettings.AddAjaxSetting(validator1, LookupGrid);
}
}
protected
void
LookupGrid_ItemCommand(
object
source, Telerik.Web.UI.GridCommandEventArgs e)
{
if
(e.CommandName == RadGrid.InitInsertCommandName)
{
// cancel the default operation
e.Canceled =
true
;
//GridDataItem item = (GridDataItem)e.Item;
//Prepare an IDictionary with values
System.Collections.Specialized.ListDictionary newValues =
new
System.Collections.Specialized.ListDictionary();
newValues[
"ProductAttributeDefKey"
] = DefKey.Text;
//Insert the item and rebind
e.Item.OwnerTableView.InsertItem(newValues);
}
}
}
}