AUTHOR: Marin Bratanov
DATE POSTED: November 21, 2018
Sys.ArgumentNullException: Value cannot be null. Parameter name: element error is thrown when you hover over an SVG element inside a HeaderTemplate of a RadGrid in IE
Sys.ArgumentNullException: Value cannot be null. Parameter name: element
IE does not consider SVG elements and their children to be DOM elements, but it does fire the mouseover event for the child nodes in the SVG (other browsers don't). The target of those event not being a DOM element breaks some internal logic in the grid that traverses the DOM to get the actual grid element when you move, click and drag elements in the grid around - since the element is not a DOM element, it becomes null at some point and null reference exceptions happen. The exact error comes from argument validation: Function._validateParams(arguments, [{name: "element", domElement: true}])
Function._validateParams(arguments, [{name: "element", domElement: true}])
You can override the particular grid function that traverses the DOM recursively to get a domElement:
<script>
if
(Telerik && Telerik.Web && Telerik.Web.UI && Telerik.Web.UI.RadGrid && Telerik.Web.Browser.ie) {
Telerik.Web.UI.Grid.GetCurrentElement =
function
(e) {
(!e)
e = window.event;
var
currentElement;
(e.srcElement) {
currentElement = e.srcElement;
}
else
{
currentElement = e.target;
while
(currentElement && currentElement.parentNode) {
(Telerik.Web.UI.Grid.IsDomElement(currentElement)) {
return
currentElement = currentElement.parentNode;
null
;
};
</script>
</form>
Here is the simplest reproducible for the error - hover the icon mark in the header
<
telerik:RadGrid
RenderMode
=
"Lightweight"
ID
"RadGrid1"
runat
"server"
OnNeedDataSource
"rg1_NeedDataSource"
>
MasterTableView
Columns
telerik:GridTemplateColumn
HeaderTemplate
asp:Panel
input
class
"b-checkbox-input"
id
"dgvProcedures_cbxSelectAll"
type
"checkbox"
style
"display: none;"
label
"b-checkbox"
for
span
svg
width
"12px"
height
"10px"
viewBox
"0 0 12 10"
polyline
points
"1.5 6 4.5 9 10.5 1"
></
</
ClientItemTemplate
"dgvProcedures_cbx"
protected
DataTable GetDummyData()
DataTable tbl =
new
DataTable();
tbl.Columns.Add(
DataColumn(
"values"
,
typeof
(
decimal
)));
"names"
string
"moreData"
int
"colors"
tbl.Rows.Add(
object
[] { 1,
"one"
, 11,
"red"
});
[] { 2,
"two"
, 22,
"green"
[] { 3,
"three"
, 33,
"blue"
[] { 4,
"four"
, 44,
"pink"
tbl;
void
rg1_NeedDataSource(
sender, GridNeedDataSourceEventArgs e)
(sender
as
RadGrid).DataSource = GetDummyData();
Resources Buy Try