<
telerik:RadGrid
ID
=
"gvDash"
runat
=
"server"
GridLines
=
"None"
AutoGenerateColumns
=
"false"
DataSourceID
=
"dsDashboard"
PageSize
=
"15"
Width
=
"100%"
ShowStatusBar
=
"true"
AllowPaging
=
"true"
AllowSorting
=
"true"
>
<
MasterTableView
DataKeyNames
=
"FileID"
CommandItemDisplay
=
"Top"
AllowMultiColumnSorting
=
"true"
EnableHeaderContextMenu
=
"true"
EditMode
=
"PopUp"
>
<
CommandItemSettings
ShowAddNewRecordButton
=
"false"
ShowExportToWordButton
=
"true"
ShowExportToExcelButton
=
"true"
/>
<
NoRecordsTemplate
>
<
em
>No Records</
em
>
</
NoRecordsTemplate
>
<
AlternatingItemStyle
CssClass
=
"alt-row"
/>
<
Columns
>
<
telerik:GridTemplateColumn
UniqueName
=
"Options"
Groupable
=
"false"
AllowFiltering
=
"false"
HeaderText
=
"Options"
>
<
ItemTemplate
>
<
asp:HyperLink
ID
=
"EditLink"
runat
=
"server"
Text
=
"Edit"
></
asp:HyperLink
>
<
asp:LinkButton
ID
=
"btnView"
runat
=
"server"
Text
=
"View"
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"FileNo"
DataField
=
"FileNo"
HeaderText
=
"File Number"
SortExpression
=
"FileNo"
Groupable
=
"false"
/>
<
telerik:GridBoundColumn
UniqueName
=
"DisplayName"
DataField
=
"DisplayName"
HeaderText
=
"Vessel"
SortExpression
=
"DisplayName"
/>
<
telerik:GridBoundColumn
UniqueName
=
"VesselStatusName"
DataField
=
"VesselStatusName"
HeaderText
=
"Status"
SortExpression
=
"VesselStatusName"
/>
<
telerik:GridBoundColumn
UniqueName
=
"OfficeName"
DataField
=
"OfficeName"
HeaderText
=
"Office Location"
SortExpression
=
"OfficeName"
/>
<
telerik:GridCheckBoxColumn
UniqueName
=
"AddedToQB"
DataField
=
"AddedToQB"
HeaderText
=
"Vsl Added QB"
SortExpression
=
"AddedToQB"
/>
<
telerik:GridBoundColumn
UniqueName
=
"VesselSailed"
DataField
=
"VesselSailed"
HeaderText
=
"Sail Date"
SortExpression
=
"VesselSailed"
DataFormatString
=
"{0:M/d/yyyy HH:mm}"
/>
<
telerik:GridCheckBoxColumn
UniqueName
=
"SailDateQB"
DataField
=
"SailDateQB"
HeaderText
=
"Sail Date Added QB"
SortExpression
=
"SailDateQB"
/>
<
telerik:GridBoundColumn
UniqueName
=
"CargoName"
DataField
=
"CargoName"
HeaderText
=
"Cargo"
SortExpression
=
"CargoName"
/>
<
telerik:GridTemplateColumn
UniqueName
=
"PayingPrinci"
HeaderText
=
"Paying Principal"
GroupByExpression
=
"PayingPrinciName Group By PayingPrinciName"
SortExpression
=
"PayingPrinciName"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblPayingPrinci"
runat
=
"server"
Text='<%# Bind("PayingPrinciName") %>'></
asp:Label
>
<
br
/><
asp:Label
ID
=
"lblPayingPrinciAddress"
CssClass
=
"label-note"
runat
=
"server"
Text='<%# Bind("PayingPrinciAddress") %>'></
asp:Label
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"PDAAmnt"
DataField
=
"PDAAmnt"
HeaderText
=
"PDA AMT"
SortExpression
=
"PDAAmnt"
DataFormatString
=
"{0:c}"
/>
<
telerik:GridBoundColumn
UniqueName
=
"RECVDAmnt"
DataField
=
"RECVDAmnt"
HeaderText
=
"PDA AMT Rcvd"
SortExpression
=
"RECVDAmnt"
DataFormatString
=
"{0:c}"
/>
<
telerik:GridBoundColumn
UniqueName
=
"PerformaDateRcvd"
DataField
=
"PerformaDateRcvd"
HeaderText
=
"PDA Date Rcvd"
SortExpression
=
"PerformaDateRcvd"
DataFormatString
=
"{0:M/d/yyyy}"
/>
<
telerik:GridBoundColumn
UniqueName
=
"CTMAmnt"
Display
=
"false"
DataField
=
"CTMAmnt"
HeaderText
=
"CTM AMT"
SortExpression
=
"CTMAmnt"
DataFormatString
=
"{0:c}"
/>
<
telerik:GridBoundColumn
UniqueName
=
"CTMAmntRcvd"
Display
=
"false"
DataField
=
"CTMAmntRcvd"
HeaderText
=
"CTM AMT Rcvd"
SortExpression
=
"RECVDAmnt"
DataFormatString
=
"{0:c}"
/>
<
telerik:GridBoundColumn
UniqueName
=
"CTMAmntDate"
Display
=
"false"
DataField
=
"CTMAmntDate"
HeaderText
=
"CTM Date Rcvd"
SortExpression
=
"PerformaDateRcvd"
DataFormatString
=
"{0:M/d/yyyy}"
/>
<
telerik:GridBoundColumn
UniqueName
=
"PortName"
DataField
=
"PortName"
HeaderText
=
"Port"
SortExpression
=
"PortName"
/>
<
telerik:GridBoundColumn
UniqueName
=
"AccountingNotes"
Display
=
"false"
DataField
=
"AccountingNotes"
HeaderText
=
"Comments"
/>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
AllowColumnsReorder
=
"true"
AllowColumnHide
=
"true"
>
<
Resizing
AllowColumnResize
=
"true"
AllowResizeToFit
=
"true"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
Private
Sub
LoadSettings()
If
Not
IsNothing(Session(
"Acc.Funds.GridSettings"
))
Then
Dim
LoadPersister
As
New
GridSettingsPersister(gvDash)
Dim
settings
As
String
=
DirectCast
(Session(
"Acc.Funds.GridSettings"
),
String
)
LoadPersister.LoadSettings(settings)
End
If
End
Sub
Private
Sub
SaveSettings()
Dim
SavePersister
As
New
GridSettingsPersister(gvDash)
Session(
"Acc.Funds.GridSettings"
) = SavePersister.SaveSettings()
End
Sub
I have a hierarchy radgrid that contains "Case Number" parent objects and "Offense" child objects and supports Insert/Update/Delete functionality.
I am getting the following error:
DataBinding: 'Telerik.Web.UI.GridInsertionObject' does not contain a property with the name 'AgencyID'.
To get this error I am performing the following actions:
The error occurs at this point!
My question is how do I go about fixing this problem?
My grid definition is as follows:
<
telerik:RadGrid
ID
=
"radGridCaseNumbers"
AutoGenerateColumns
=
"false"
AllowMultiRowEdit
=
"false"
Visible
=
"false"
runat
=
"server"
OnInsertCommand
=
"radGridCaseNumbers_InsertCommand"
OnUpdateCommand
=
"radGridCaseNumbers_UpdateCommand"
OnDeleteCommand
=
"radGridCaseNumbers_DeleteCommand"
OnNeedDataSource
=
"radGridCaseNumbers_NeedDataSource"
OnDetailTableDataBind
=
"radGridCaseNumbers_DetailTableDataBind"
OnItemCommand
=
"radGridCaseNumbers_ItemCommand"
>
<
MasterTableView
CommandItemDisplay
=
"Top"
DataKeyNames
=
"CaseNumberID"
TableLayout
=
"Auto"
Name
=
"CaseNumbers"
HierarchyDefaultExpanded
=
"true"
NoMasterRecordsText
=
"No Case Number records to display"
>
<
DetailTables
>
<
telerik:GridTableView
DataKeyNames
=
"OffenseID"
runat
=
"server"
CommandItemDisplay
=
"Top"
TableLayout
=
"Auto"
Name
=
"Offenses"
NoDetailRecordsText
=
"No Offense records to display"
>
<
ParentTableRelation
>
<
telerik:GridRelationFields
DetailKeyField
=
"CaseNumberID"
MasterKeyField
=
"CaseNumberID"
/>
</
ParentTableRelation
>
<
CommandItemTemplate
>
<
div
>
<
telerik:RadButton
ID
=
"radButtonAddOffense"
runat
=
"server"
Text
=
"Add New Offense"
CommandName
=
"InitInsert"
Visible='<%# !radGridCaseNumbers.MasterTableView.IsItemInserted %>'
ButtonType="StandardButton">
</
telerik:RadButton
>
</
div
>
</
CommandItemTemplate
>
<
Columns
>
<
telerik:GridDropDownColumn
HeaderText
=
"Arresting PD"
EnableEmptyListItem
=
"true"
DataField
=
"AgencyID"
ListTextField
=
"Name"
ListValueField
=
"ID"
DataSourceID
=
"objectDataSourceAgencies"
>
</
telerik:GridDropDownColumn
>
<
telerik:GridEditCommandColumn
ButtonType
=
"PushButton"
UniqueName
=
"EditOffenseCommandColumn"
/>
<
telerik:GridButtonColumn
UniqueName
=
"DeleteOffenseColumn"
ButtonType
=
"PushButton"
Text
=
"Delete"
CommandName
=
"Delete"
/>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
>
<
FormTemplate
>
<
div
>
<
table
cellpadding
=
"0"
cellspacing
=
"0"
class
=
"tableContentControls"
>
<
tr
>
<
td
class
=
"tableCellRequiredField"
><
asp:Label
Text
=
"*"
runat
=
"server"
CssClass
=
"labelRequiredField"
/></
td
>
<
td
class
=
"tableCellLabel"
><
asp:Label
Text
=
"Arresting PD:"
runat
=
"server"
CssClass
=
"labelDescription"
/></
td
>
<
td
class
=
"tableCellControl"
>
<
telerik:RadComboBox
ID
=
"radComboBoxAgency"
AutoPostBack
=
"true"
EmptyMessage
=
"(Select an Arresting PD)"
EnableLoadOnDemand
=
"true"
DataSourceID
=
"objectDataSourceAgencies"
DataTextField
=
"Name"
DataValueField
=
"ID"
SelectedValue='<%# Bind("AgencyID") %>'
Filter="StartsWith" runat="server" OnSelectedIndexChanged="radComboBoxAgency_SelectedIndexChanged">
</
telerik:RadComboBox
>
</
td
>
<
td
class
=
"tableCellValidation"
>
<
asp:RequiredFieldValidator
ID
=
"requiredFieldValidatorAgency"
ControlToValidate
=
"radComboBoxAgency"
runat
=
"server"
ValidationGroup
=
"validationGroup_Details_OffensesGrid"
>
<
table
>
<
tr
>
<
td
><
asp:Image
runat
=
"server"
ImageUrl
=
"~/Images/ValidationError.png"
/></
td
>
<
td
><
asp:Label
runat
=
"server"
Text
=
"Arresting PD is required"
CssClass
=
"labelValidationError"
/></
td
>
</
tr
>
</
table
>
</
asp:RequiredFieldValidator
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"4"
>
<
telerik:RadButton
ID
=
"radButtonInsertUpdateOffense"
CausesValidation
=
"true"
CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'
Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>' ValidationGroup="validationGroup_Details_OffensesGrid"
runat="server" OnClientClicking="performInsertOrUpdateOffense">
</
telerik:RadButton
>
<
telerik:RadButton
ID
=
"radButtonCancelInsertUpdateOffense"
CausesValidation
=
"false"
CommandName
=
"Cancel"
Text
=
"Cancel"
runat
=
"server"
/>
</
td
>
</
tr
>
</
table
>
</
div
>
</
FormTemplate
>
</
EditFormSettings
>
</
telerik:GridTableView
>
</
DetailTables
>
<
CommandItemTemplate
>
<
div
>
<
telerik:RadButton
ID
=
"radButtonAddCaseNumber"
runat
=
"server"
Text
=
"Add New Case Number"
CommandName
=
"InitInsert"
Visible='<%# !radGridCaseNumbers.MasterTableView.IsItemInserted %>'
ButtonType="StandardButton">
</
telerik:RadButton
>
</
div
>
</
CommandItemTemplate
>
<
Columns
>
<
telerik:GridBoundColumn
HeaderText
=
"Number"
DataField
=
"Number"
HeaderStyle-Width
=
"20"
/>
<
telerik:GridDropDownColumn
HeaderText
=
"Type"
EnableEmptyListItem
=
"true"
DataField
=
"TypeID"
ListTextField
=
"Description"
ListValueField
=
"ID"
DataSourceID
=
"objectDataSourceCaseNumberTypes"
HeaderStyle-Width
=
"20"
/>
<
telerik:GridEditCommandColumn
ButtonType
=
"PushButton"
UniqueName
=
"EditCaseNumberCommandColumn"
HeaderStyle-Width
=
"10"
/>
<
telerik:GridButtonColumn
UniqueName
=
"DeleteCaseNumberColumn"
ButtonType
=
"PushButton"
Text
=
"Delete"
CommandName
=
"Delete"
HeaderStyle-Width
=
"200"
/>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
>
<
FormTemplate
>
<
div
>
<
table
>
<
tr
>
<
td
class
=
"tableCellRequiredField"
><
asp:Label
Text
=
"*"
runat
=
"server"
CssClass
=
"labelRequiredField"
/></
td
>
<
td
class
=
"tableCellLabel"
><
asp:Label
Text
=
"Number:"
runat
=
"server"
CssClass
=
"labelDescription"
/></
td
>
<
td
class
=
"tableCellControl"
><
telerik:RadTextBox
ID
=
"radTextBoxNumber"
Text='<%# Bind("Number") %>' runat="server" /></
td
>
<
td
class
=
"tableCellValidation"
>
<
asp:RequiredFieldValidator
ID
=
"requiredFieldValidatorNumber"
ControlToValidate
=
"radTextBoxNumber"
runat
=
"server"
ValidationGroup
=
"validationGroup_Details_CaseNumbersGrid"
>
<
table
>
<
tr
>
<
td
><
asp:Image
runat
=
"server"
ImageUrl
=
"~/Images/ValidationError.png"
/></
td
>
<
td
><
asp:Label
runat
=
"server"
Text
=
"Number is required"
CssClass
=
"labelValidationError"
/></
td
>
</
tr
>
</
table
>
</
asp:RequiredFieldValidator
>
</
td
>
</
tr
>
<
tr
>
<
td
class
=
"tableCellRequiredField"
><
asp:Label
Text
=
"*"
runat
=
"server"
CssClass
=
"labelRequiredField"
/></
td
>
<
td
class
=
"tableCellLabel"
><
asp:Label
Text
=
"Type:"
runat
=
"server"
CssClass
=
"labelDescription"
/></
td
>
<
td
class
=
"tableCellControl"
>
<
telerik:RadComboBox
ID
=
"radComboBoxType"
DataSourceID
=
"objectDataSourceCaseNumberTypes"
DataTextField
=
"Description"
DataValueField
=
"ID"
EmptyMessage
=
"(Select a Type)"
EnableLoadOnDemand
=
"true"
Filter
=
"StartsWith"
SelectedValue='<%# Bind("TypeID") %>' runat="server">
</
telerik:RadComboBox
>
</
td
>
<
td
class
=
"tableCellValidation"
>
<
asp:RequiredFieldValidator
ID
=
"requiredFieldValidatorType"
ControlToValidate
=
"radComboboxType"
runat
=
"server"
ValidationGroup
=
"validationGroup_Details_CaseNumbersGrid"
>
<
table
>
<
tr
>
<
td
><
asp:Image
runat
=
"server"
ImageUrl
=
"~/Images/ValidationError.png"
/></
td
>
<
td
><
asp:Label
runat
=
"server"
Text
=
"Type is required"
CssClass
=
"labelValidationError"
/></
td
>
</
tr
>
</
table
>
</
asp:RequiredFieldValidator
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"4"
>
<
telerik:RadButton
ID
=
"radButtonInsertUpdateCaseNumber"
CausesValidation
=
"true"
CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'
Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>' ValidationGroup="validationGroup_Details_CaseNumbersGrid"
runat="server" OnClientClicking="performInsertOrUpdateCaseNumber">
</
telerik:RadButton
>
<
telerik:RadButton
ID
=
"radButtonCancelInsertUpdateCaseNumber"
CausesValidation
=
"false"
CommandName
=
"Cancel"
Text
=
"Cancel"
runat
=
"server"
/>
</
td
>
</
tr
>
</
table
>
</
div
>
</
FormTemplate
>
</
EditFormSettings
>
</
MasterTableView
>
<
ValidationSettings
CommandsToValidate
=
"PerformInsert,Update"
/>
</
telerik:RadGrid
>
The code-behind for the grid is as follows:
public
DataSet CaseNumbers
{
get
{
object
obj = ViewState[
"CaseNumbers"
];
if
(obj !=
null
)
return
(DataSet)obj;
DataSet caseNumbers =
new
DataSet();
ReferralDb referralDb =
new
ReferralDb();
caseNumbers = referralDb.GetReferralCaseNumbers(Convert.ToInt32(hiddenFieldReferralID.Value));
ViewState[
"CaseNumbers"
] = caseNumbers;
return
caseNumbers;
}
}
public
DataSet Offenses
{
get
{
object
obj = ViewState[
"Offenses"
];
if
(obj !=
null
)
return
(DataSet)obj;
DataSet offenses =
new
DataSet();
ReferralDb referralDb =
new
ReferralDb();
offenses = referralDb.GetReferralOffenses(Convert.ToInt32(hiddenFieldReferralID.Value));
ViewState[
"Offenses"
] = offenses;
return
offenses;
}
}
protected
void
radGridCaseNumbers_DeleteCommand(
object
sender, GridCommandEventArgs e)
{
string
id =
null
;
DataTable dataTableOffenses =
null
;
DataTable dataTableCaseNumbers =
null
;
if
(
"Offenses"
.Equals(e.Item.OwnerTableView.Name))
{
id = ((GridDataItem)e.Item).OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"OffenseID"
].ToString();
dataTableOffenses = Offenses.Tables[
"Offense"
];
if
(dataTableOffenses.Rows.Find(id) !=
null
)
dataTableOffenses.Rows.Find(id).Delete();
}
else
if
(
"CaseNumbers"
.Equals(e.Item.OwnerTableView.Name))
{
id = ((GridDataItem)e.Item).OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"CaseNumberID"
].ToString();
dataTableCaseNumbers = CaseNumbers.Tables[
"CaseNumber"
];
if
(dataTableCaseNumbers.Rows.Find(id) !=
null
)
dataTableCaseNumbers.Rows.Find(id).Delete();
dataTableOffenses = Offenses.Tables[
"Offense"
];
DataRow[] offenses = Offenses.Tables[
"Offense"
].Select(
"CaseNumberID = "
+ id);
foreach
(DataRow dataRow
in
offenses)
{
id = dataRow[
"OffenseID"
].ToString();
dataTableOffenses.Rows.Find(id).Delete();
}
}
}
protected
void
radGridCaseNumbers_DetailTableDataBind(
object
sender, GridDetailTableDataBindEventArgs e)
{
GridDataItem gridDataItem = (GridDataItem)e.DetailTableView.ParentItem;
int
caseNumberID = (
int
)gridDataItem.GetDataKeyValue(
"CaseNumberID"
);
e.DetailTableView.DataSource = Offenses.Tables[
"Offense"
].Select(
"CaseNumberID = "
+ caseNumberID.ToString());
Offenses.Tables[
"Offense"
].PrimaryKey =
new
DataColumn[] { Offenses.Tables[
"Offense"
].Columns[
"OffenseID"
] };
}
protected
void
radGridCaseNumbers_InsertCommand(
object
sender, GridCommandEventArgs e)
{
GridEditableItem gridEditableItem =
null
;
DataTable dataTable =
null
;
DataRow dataRowNew =
null
;
DataRow[] allValues =
null
;
Hashtable newValues =
null
;
if
(
"Offenses"
.Equals(e.Item.OwnerTableView.Name))
{
gridEditableItem = (GridEditableItem)e.Item;
dataTable = Offenses.Tables[
"Offense"
];
dataRowNew = dataTable.NewRow();
allValues = dataTable.Select(
""
,
"OffenseID"
, DataViewRowState.CurrentRows);
if
(allValues.Length > 0)
dataRowNew[
"OffenseID"
] = (
int
)allValues[allValues.Length - 1][
"OffenseID"
] + 1;
else
dataRowNew[
"OffenseID"
] = 1;
//table empty
newValues =
new
Hashtable();
e.Item.OwnerTableView.ExtractValuesFromItem(newValues, gridEditableItem);
try
{
foreach
(DictionaryEntry entry
in
newValues)
dataRowNew[(
string
)entry.Key] = entry.Value;
GridDataItem parentItem = (GridDataItem)e.Item.OwnerTableView.ParentItem;
dataRowNew[
"CaseNumberID"
] = parentItem.OwnerTableView.DataKeyValues[parentItem.ItemIndex][
"CaseNumberID"
].ToString();
}
catch
{
e.Canceled =
true
;
}
dataTable.Rows.Add(dataRowNew);
}
else
if
(
"CaseNumbers"
.Equals(e.Item.OwnerTableView.Name))
{
gridEditableItem = (GridEditableItem)e.Item;
dataTable = CaseNumbers.Tables[
"CaseNumber"
];
dataRowNew = dataTable.NewRow();
allValues = dataTable.Select(
""
,
"CaseNumberID"
, DataViewRowState.CurrentRows);
if
(allValues.Length > 0)
dataRowNew[
"CaseNumberID"
] = (
int
)allValues[allValues.Length - 1][
"CaseNumberID"
] + 1;
else
dataRowNew[
"CaseNumberID"
] = 1;
//table empty
newValues =
new
Hashtable();
e.Item.OwnerTableView.ExtractValuesFromItem(newValues, gridEditableItem);
try
{
foreach
(DictionaryEntry entry
in
newValues)
dataRowNew[(
string
)entry.Key] = entry.Value;
}
catch
{
e.Canceled =
true
;
}
dataTable.Rows.Add(dataRowNew);
}
}
protected
void
radGridCaseNumbers_ItemCommand(
object
sender, GridCommandEventArgs e)
{
if
(e.CommandName.Equals(RadGrid.EditCommandName))
radGridCaseNumbers.MasterTableView.IsItemInserted =
false
;
if
(e.CommandName.Equals(RadGrid.InitInsertCommandName))
radGridCaseNumbers.MasterTableView.ClearEditItems();
if
((e.CommandName.Equals(RadGrid.InitInsertCommandName)) && (
"Offenses"
.Equals(e.Item.OwnerTableView.Name)))
{
if
(e.Item.OwnerTableView.Items.Count.Equals(0))
{
e.Canceled =
true
;
System.Collections.Specialized.ListDictionary newVal =
new
System.Collections.Specialized.ListDictionary();
newVal[
"AgencyID"
] =
null
;
e.Item.OwnerTableView.InsertItem(newVal);
}
}
}
protected
void
radGridCaseNumbers_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
((RadGrid)sender).DataSource = CaseNumbers;
CaseNumbers.Tables[
"CaseNumber"
].PrimaryKey =
new
DataColumn[] { CaseNumbers.Tables[
"CaseNumber"
].Columns[
"CaseNumberID"
] };
}
protected
void
radGridCaseNumbers_UpdateCommand(
object
sender, GridCommandEventArgs e)
{
GridEditableItem gridEditableItem =
null
;
DataTable dataTable =
null
;
DataRow[] changedRows =
null
;
Hashtable newValues =
null
;
DataRow dataRowChanged =
null
;
if
(
"Offenses"
.Equals(e.Item.OwnerTableView.Name))
{
gridEditableItem = (GridEditableItem)e.Item;
dataTable = Offenses.Tables[
"Offense"
];
changedRows = dataTable.Select(
"OffenseID = "
+ gridEditableItem.OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"OffenseID"
]);
newValues =
new
Hashtable();
e.Item.OwnerTableView.ExtractValuesFromItem(newValues, gridEditableItem);
dataRowChanged = changedRows[0];
dataRowChanged.BeginEdit();
try
{
foreach
(DictionaryEntry entry
in
newValues)
dataRowChanged[(
string
)entry.Key] = entry.Value;
dataRowChanged.EndEdit();
}
catch
{
dataRowChanged.CancelEdit();
e.Canceled =
true
;
}
}
else
if
(
"CaseNumbers"
.Equals(e.Item.OwnerTableView.Name))
{
gridEditableItem = (GridEditableItem)e.Item;
dataTable = CaseNumbers.Tables[
"CaseNumber"
];
changedRows = dataTable.Select(
"CaseNumberID = "
+ gridEditableItem.OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"CaseNumberID"
]);
newValues =
new
Hashtable();
e.Item.OwnerTableView.ExtractValuesFromItem(newValues, gridEditableItem);
dataRowChanged = changedRows[0];
dataRowChanged.BeginEdit();
try
{
foreach
(DictionaryEntry entry
in
newValues)
dataRowChanged[(
string
)entry.Key] = entry.Value;
dataRowChanged.EndEdit();
}
catch
{
dataRowChanged.CancelEdit();
e.Canceled =
true
;
}
}
}
I am already supressing a similar binding error in the ItemCommand event handler in the case where an insert is initiated into the "Offenses" detail table that is empty.
I was trying to do something similar in the case of an ExpandCollapse command but had no luck.
I'm trying to use a raddatepicker in a radgrid where the user can only select the Month and Year, rather than the date from the RadCalendar.
<script type="text/javascript"> |
//override the onload event handler to change the picker after the page is loaded |
window.onload = function () |
{ |
window.setTimeout(function() {SetCalendarTable();},200) |
} |
function SetCalendarTable() |
{ |
var picker = "ctl00_RadPanel_ForecastGrid_ctl00_ctl02_ctl02_rdpForecastStartDate"; |
var calendar = picker.get_calendar(); |
var fastNavigation = calendar._getFastNavigation(); |
$clearHandlers(picker.get_popupButton()); |
$addHandler(picker.get_popupButton(), "click", function() |
{ |
//debugger; |
var textbox = picker.get_textBox(); |
//adjust where to show the popup table |
var x, y; |
var adjustElement = textbox; |
if (textbox.style.display == "none") |
adjustElement = picker.get_popupImage(); |
var pos = picker.getElementPosition(adjustElement); |
x = pos.x; |
y = pos.y + adjustElement.offsetHeight; |
var e = { |
clientX : x, |
clientY : y |
}; |
//synchronize the input date if set with the picker one |
var date = picker.get_selectedDate(); |
if(date) |
{ |
calendar.FocusedDate[0] = date.getFullYear(); |
calendar.FocusedDate[1] = date.getMonth() + 1; |
} |
$get(calendar._titleID).onclick(e); |
}); |
fastNavigation.OnOK = |
function() |
{ |
var date = new Date(fastNavigation.Year, fastNavigation.Month, 1); |
picker.get_dateInput().SetDate(date); |
fastNavigation.Popup.Hide(); |
} |
fastNavigation.OnToday = |
function() |
{ |
var date = new Date(); |
picker.get_dateInput().SetDate(date); |
fastNavigation.Popup.Hide(); |
} |
} |
</script> |
<telerik:RadGrid ID="ForecastGrid" |
AllowPaging="True" |
AllowSorting="True" |
EnableEmbeddedSkins="false" |
GridLines="None" |
OnInsertCommand="ForecastGrid_InsertCommand" |
OnItemCommand="ForecastGrid_ItemCommand" |
OnItemCreated="ForecastGrid_ItemCreated" |
OnItemDataBound="ForecastGrid_ItemDataBound" |
OnNeedDataSource="ForecastGrid_NeedDataSource" |
OnUpdateCommand="ForecastGrid_UpdateCommand" |
PageSize="15" |
runat="server" |
ShowFooter = "true" |
Skin="AO" |
Visible = "true"> |
<MasterTableView CommandItemDisplay="Bottom" AutoGenerateColumns = "false" DataKeyNames="ForecastId"> |
<EditFormSettings EditFormType = "Template"> |
<FormTemplate> |
<div style="padding: 10px;"> |
<div class="text"> |
Click the <b>Save</b> button to save your changes.</div> |
<div> |
<asp:Label Visible="false" ID="ErrorLabel" runat="server" /></div> |
<div style="clear: both;"> |
</div> |
<div class="validation-summary"> |
<asp:ValidationSummary HeaderText="Changes not saved." DisplayMode="SingleParagraph" |
ID="ValidationSummary1" runat="server"></asp:ValidationSummary> |
</div> |
<div style="clear: both;"> |
</div> |
<div> |
<asp:Label ID="ForecastIdLabel" Visible="false" runat="server" Text='<%# Bind("ForecastId") %>'></asp:Label></div> |
<div> |
<div> |
<asp:Label ID="IsActiveLabel" Visible="false" runat="server" Text='<%# Bind("IsActive") %>'></asp:Label> |
</div> |
<div class="label-short" style="float: left; padding-bottom: 5px; width:150px;"> |
Forecast Name:</div> |
<div style="padding-bottom: 5px;"> |
<Telerik:RadTextBox ID="ForecastName" runat="server" Skin="AO" EnableEmbeddedSkins="false" |
Text='<%# Bind("ForecastName") %>' Width="240" MaxLength="50"> |
</Telerik:RadTextBox> |
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="ForecastName" |
ErrorMessage="Forecast Name is required.">*</asp:RequiredFieldValidator> |
</div> |
<div style="clear: both;"> |
</div> |
<div class="label-short" style="float: left; padding-bottom: 5px; width:150px;"> |
Forecast Start Date:</div> |
<div style="padding-bottom: 5px;"> |
<telerik:RadDatePicker ID="rdpForecastStartDate" DateInput-DateFormat="MMMM, yyyy" runat="server" |
AutoPostBack="false" ToolTip="Month" Width="130px" CssClass="date-picker" Skin="AO" |
EnableEmbeddedSkins="false"> |
</telerik:RadDatePicker> |
<%--<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="rdpForecastStartDate" |
ErrorMessage="Forecast Start Date is required.">*</asp:RequiredFieldValidator>--%> |
</div> |
<div style="clear: both;"> |
</div> |
<div class="label-short" style="float: left; padding-bottom: 5px; width:150px;"> |
Forecast Length:</div> |
<div style="padding-bottom: 5px;"> |
<telerik:RadComboBox ID="rcbForecastLength" runat="server" ZIndex="7020" Skin="AO" EnableEmbeddedSkins="false" Width="243"> |
</telerik:RadComboBox> |
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="rcbForecastLength" |
ErrorMessage="Forecast Length is required.">*</asp:RequiredFieldValidator> |
</div> |
<div style="clear: both;"> |
</div> |
<div class="label-short" style="float: left; padding-bottom: 5px; width:150px;"> |
Is Active:</div> |
<div style="float: left; padding-bottom: 5px;"> |
<asp:CheckBox ID="IsActiveCheckbox" runat="server"></asp:CheckBox> |
</div> |
<div style="clear: both;"> |
</div> |
<div> |
<asp:Button ID="UpdateButton" CssClass="button" runat="server" Text="Save" CommandName="Update" /> |
<asp:Button ID="InsertButton" CssClass="button" runat="server" Text="Save" CommandName="PerformInsert" /> |
<asp:Button ID="CancelButton" CssClass="button" runat="server" Text="Cancel" CommandName="Cancel" |
CausesValidation="false" /> |
</div> |
</div> |
</FormTemplate> |
</EditFormSettings> |
</MasterTableView> |
</telerik:RadGrid> |
using
System;
using
Telerik.Web.UI;
public
partial
class
Default : System.Web.UI.Page
{
public
class
A
{
public
int
a {
get
;
set
; }
public
int
b {
get
;
set
; }
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
RadGrid1.DataSource =
new
A[] {
new
A() {a = 1, b = 2},
new
A() {a = 3, b = 4}};
}
protected
void
rg_ItemCommand(
object
sender, GridCommandEventArgs e)
{
int
i = e.Item.ItemIndex;
GridDataItem item = (GridDataItem)e.Item;
int
letterId = (
int
)item.GetDataKeyValue(
"a"
);
//GridDataItem dataItem = RadGrid1.SelectedItems[0] as GridDataItem;
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
title
></
title
>
<
telerik:RadStyleSheetManager
ID
=
"RadStyleSheetManager1"
runat
=
"server"
/>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
<
Scripts
>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI, Version=2012.3.1205.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"
Name
=
"Telerik.Web.UI.Common.Core.js"
/>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI, Version=2012.3.1205.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"
Name
=
"Telerik.Web.UI.Common.jQuery.js"
/>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI, Version=2012.3.1205.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"
Name
=
"Telerik.Web.UI.Common.jQueryInclude.js"
/>
</
Scripts
>
</
telerik:RadScriptManager
>
<
script
type
=
"text/javascript"
>
//Put your JavaScript code here.
</
script
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
</
telerik:RadAjaxManager
>
<
div
>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
OnItemCommand
=
"rg_ItemCommand"
>
<
MasterTableView
DataKeyNames
=
"a"
AutoGenerateColumns
=
"False"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"a"
DataType
=
"System.Int32"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"b"
DataType
=
"System.Int32"
>
</
telerik:GridBoundColumn
>
<
telerik:GridButtonColumn
ButtonType
=
"LinkButton"
CommandName
=
"test"
Text
=
"test"
>
</
telerik:GridButtonColumn
>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
>
<%--removing Oncommand will make itemindex work--%>
<
ClientEvents
OnCommand
=
"rgCommand"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
</
div
>
<
script
type
=
"text/javascript"
>
function rgCommand(sender, args) {
var commandName = args.get_commandName();
}
</
script
>
</
form
>
</
body
>
</
html
>
((Wcsr.ProjectBilling.Business.Data.ProjectTask)
(Container.DataItem ??
new
Wcsr.ProjectBilling.Business.Data.ProjectTask())).Code
<
asp:FormView
ID
=
"FormView1"
runat
=
"server"
DataSourceID
=
"ObjectDataSource1"
DefaultMode
=
"Edit"
OnItemUpdated
=
"FormView1_ItemUpdated"
OnItemUpdating
=
"FormView1_ItemUpdating"
>
<
EditItemTemplate
>
<
telerik:RadPanelBar
ID
=
"RadPanelBar1"
runat
=
"server"
Skin
=
"Metro"
Width
=
"100%"
>
<
Items
>
<
telerik:RadPanelItem
runat
=
"server"
Expanded
=
"True"
PreventCollapse
=
"True"
Text
=
"Basic Task Information"
>
<
ContentTemplate
>
<
div
>
<
asp:Label
ID
=
"Label1"
runat
=
"server"
CssClass
=
"fieldLabel"
>Task Code</
asp:Label
>
<%-- For some reason RadPanelItem requires you to do databinding with DataBinder.Eval --%>
<
asp:TextBox
ID
=
"TaskCodeTb"
runat
=
"server"
MaxLength
=
"20"
Text='<%# ((Wcsr.ProjectBilling.Business.Data.ProjectTask)
(Container.DataItem ?? new Wcsr.ProjectBilling.Business.Data.ProjectTask())).Code %>'></
asp:TextBox
>
</
div
>
<
div
>
<
asp:Label
ID
=
"Label4"
runat
=
"server"
CssClass
=
"fieldLabel"
>Task Description</
asp:Label
>
<
asp:TextBox
ID
=
"DescriptionTb"
runat
=
"server"
MaxLength
=
"250"
Rows
=
"3"
Text='<%# ((Wcsr.ProjectBilling.Business.Data.ProjectTask)
(Container.DataItem ?? new Wcsr.ProjectBilling.Business.Data.ProjectTask())).Description %>' TextMode="MultiLine"></
asp:TextBox
>
</
div
>
</
ContentTemplate
>
</
telerik:RadPanelItem
>
</
telerik:RadPanelBar
>
<
asp:LinkButton
runat
=
"server"
ID
=
"UpdateLb"
Text
=
"Update"
CommandName
=
"Update"
></
asp:LinkButton
>
<
asp:LinkButton
runat
=
"server"
ID
=
"CancelLb"
Text
=
"Cancel"
CommandName
=
"Cancel"
></
asp:LinkButton
>
</
EditItemTemplate
>
</
asp:FormView
>