Custom Control - RadGrid - DataBinder.Eval throwing null error - need help
Hello,
So I have an issue where I am trying to get the key field value from a RadGrid in to a label using Eval and I get Value Cannot Be Null. If I put a value instead, the grid works fine. Can someone see why the Eval of Emp# does not work?
Here is the line from the entire ASPX.
<
asp:Label
ID
=
"Label1"
Font-Bold
=
"true"
Font-Italic
=
"true"
Text='<%# DataBinder.Eval(Container.DataItem,"Emp#") %>' Visible="true" runat="server" />
And I tried:
<
asp:Label
ID
=
"Label1"
Font-Bold
=
"true"
Font-Italic
=
"true"
Text='<%# Eval("Emp#") %>' Visible="true" runat="server" />
<%@ Control Language="C#" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<%@ Register TagPrefix="sitefinity" Namespace="Telerik.Sitefinity.Web.UI" Assembly="Telerik.Sitefinity" %>
<
div
class
=
"oneColumn"
style
=
"position:relative;"
>
<
h3
>YRMC Employee Photo Directory</
h3
>
</
div
>
<
div
class
=
"twoColumn"
style
=
"float:left; width:45%;"
>
<
asp:Label
ID
=
"lblCampus"
runat
=
"server"
Font-Bold
=
"True"
Font-Names
=
"Arial"
Font-Size
=
"Medium"
ForeColor
=
"#880000"
Text
=
"Campus/Location"
Width
=
"172px"
></
asp:Label
><
br
/>
<
asp:DropDownList
ID
=
"ddLocation"
runat
=
"server"
AutoPostBack
=
"True"
Width
=
"270px"
>
</
asp:DropDownList
>
<
br
/>
<
br
/>
<
asp:Label
ID
=
"lblDepartment"
runat
=
"server"
Font-Names
=
"Arial"
Text
=
"Department"
Width
=
"174px"
Font-Bold
=
"True"
Font-Size
=
"Medium"
ForeColor
=
"#880000"
></
asp:Label
><
br
/>
<
asp:DropDownList
ID
=
"ddDepartment"
runat
=
"server"
Width
=
"270px"
AutoPostBack
=
"True"
ToolTip
=
"Select a Department"
>
</
asp:DropDownList
><
br
/>
<
br
/>
<
b
>*Disclaimer: Employee photographs should be used for business purposes only.</
b
>
<
br
/><
br
/>
</
div
>
<
div
class
=
"twoColumn"
style
=
"float:right; width:45%;"
>
<
asp:Label
ID
=
"lblEmpName"
runat
=
"server"
Font-Names
=
"Arial"
Text
=
"Search by Employee Name"
Width
=
"294px"
Font-Bold
=
"True"
Font-Size
=
"Medium"
ForeColor
=
"#880000"
></
asp:Label
><
br
/>
<
asp:Label
ID
=
"lblSearchName2"
runat
=
"server"
Font-Names
=
"Arial"
Text
=
" (Search for a name or any part of a name.)"
Width
=
"294px"
></
asp:Label
><
br
/>
<
asp:TextBox
ID
=
"txtSearchName"
runat
=
"server"
Width
=
"270px"
ToolTip
=
"Searches for a name or any part of a name."
></
asp:TextBox
>
<
asp:Button
ID
=
"btnSearchName"
runat
=
"server"
Font-Bold
=
"True"
ForeColor
=
"Maroon"
Text
=
"Search!"
Width
=
"105px"
/>
<
br
/><
br
/>
<
b
>Note:</
b
> Please contact HR x 5795 with any questions.
Please ask employees without photos to contact HR to
have a picture taken. Photos of future employees are not available prior to their hire date.<
br
/>
</
div
>
<
div
style
=
"clear:both"
/>
<
input
type
=
"button"
onclick
=
"history.go(0)"
value
=
"Reset List"
style
=
"color:Maroon; font-weight:bold; width:105px"
/>
<
br
/>
<
div
style
=
"width:100%;height:600px;overflow-y:auto;overflow-x:hidden;padding:5px 5px 5px 5px; border: thin solid silver;"
>
<
asp:Label
ID
=
"lblSort"
runat
=
"server"
Font-Bold
=
"True"
Font-Size
=
"Smaller"
ForeColor
=
"Maroon"
Text
=
"You may sort on any category by clicking on any column heading."
Font-Italic
=
"True"
Width
=
"440px"
></
asp:Label
>
<
br
/>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"rgEmployees"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"rgEmployees"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadGrid
id
=
"rgEmployees"
runat
=
"server"
allowpaging
=
"True"
AllowSorting
=
"true"
PageSize
=
"20"
DataSourceID
=
"SqlSource1"
OnPreRender
=
"RadGrid1_PreRender"
AutoGenerateColumns
=
"False"
AllowFilteringByColumn
=
"false"
Skin
=
"Outlook"
OnItemCreated
=
"RadGrid1_ItemCreated"
OnItemCommand
=
"RadGrid1_ItemCommand"
>
<
MasterTableView
DataSourceID
=
"SqlSource1"
PageSize
=
"20"
DataKeyNames
=
"Emp#"
>
<
NestedViewTemplate
>
<
asp:Panel
runat
=
"server"
ID
=
"InnerContainer"
CssClass
=
"viewWrap"
Visible
=
"true"
>
<
telerik:RadTabStrip
runat
=
"server"
ID
=
"TabStrip1"
MultiPageID
=
"Multipage1"
SelectedIndex
=
"0"
>
<
Tabs
>
<
telerik:RadTab
runat
=
"server"
Text
=
"Details"
Selected
=
"true"
PageViewID
=
"PageView1"
></
telerik:RadTab
>
</
Tabs
>
</
telerik:RadTabStrip
>
<
telerik:RadMultiPage
runat
=
"server"
ID
=
"Multipage1"
SelectedIndex
=
"0"
RenderSelectedPageOnly
=
"false"
>
<
telerik:RadPageView
runat
=
"server"
ID
=
"PageView1"
>
<
asp:Label
ID
=
"Label1"
Font-Bold
=
"true"
Font-Italic
=
"true"
Text='<%# DataBinder.Eval(Container.DataItem,"Emp#") %>' Visible="true" runat="server" />
<
div
class
=
"contactWrap"
>
<
table
cellpadding
=
"0"
cellspacing
=
"0"
>
<
tr
>
<
td
>
<
asp:FormView
ID
=
"DetailsView1"
runat
=
"server"
DataSourceID
=
"SqlSource2"
>
<
ItemTemplate
>
<
hr
/>
<
h1
><%# Eval("FullName") %></
h1
>
<
table
border
=
"0"
>
<
tr
>
<
td
class
=
"EmployeePropertyLabel"
>Job Title</
td
>
<
td
class
=
"EmployeePropertyValue"
><%# Eval("JobTitle") %></
td
>
<
td
rowspan
=
"5"
><
img
src='file://\\apidata\Image\<%# Eval("Photo") %>' alt="Employee Photo" /></
td
>
</
tr
>
<
tr
>
<
td
class
=
"EmployeePropertyLabel"
>Department Name</
td
>
<
td
class
=
"EmployeePropertyValue"
><%# Eval("DeptName") %></
td
>
</
tr
>
<
tr
>
<
td
class
=
"EmployeePropertyLabel"
>Campus</
td
>
<
td
class
=
"EmployeePropertyValue"
><%# Eval("Campus") %></
td
>
</
tr
>
<
tr
>
<
td
class
=
"EmployeePropertyLabel"
>Shift</
td
>
<
td
class
=
"EmployeePropertyValue"
><%# Eval("Shift") %></
td
>
</
tr
>
<
tr
>
<
td
class
=
"EmployeePropertyLabel"
>Hire Date</
td
>
<
td
class
=
"EmployeePropertyValue"
><%# Eval("HireDate") %></
td
>
</
tr
>
</
table
>
<
hr
/>
</
ItemTemplate
>
</
asp:FormView
>
<
asp:SqlDataSource
ID
=
"SqlSource2"
runat
=
"server"
ConnectionString
=
"Data Source=SomeTable;Initial Catalog=;User ID=;Password="
SelectCommand
=
"SELECT * FROM dbo.wwwEmployeePhotos WHERE (Emp# = @Emp#)"
ProviderName
=
"System.Data.SqlClient"
>
<
SelectParameters
>
<
asp:ControlParameter
ControlID
=
"Label1"
PropertyName
=
"Text"
Type
=
"String"
Name
=
"Emp#"
/>
</
SelectParameters
>
</
asp:SqlDataSource
>
</
td
>
</
tr
>
</
table
>
</
div
>
</
telerik:RadPageView
>
</
telerik:RadMultiPage
>
</
asp:Panel
>
</
NestedViewTemplate
>
<
Columns
>
<
telerik:GridBoundColumn
UniqueName
=
"Emp#"
DataField
=
"Emp#"
Visible
=
"false"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"LastName"
HeaderText
=
"Last Name"
SortExpression
=
"LastName"
DataField
=
"LastName"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"FirstName"
HeaderText
=
"First Name"
SortExpression
=
"FirstName"
DataField
=
"FirstName"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"DeptName"
HeaderText
=
"Department Name"
SortExpression
=
"DeptName"
DataField
=
"DeptName"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"HireDate"
HeaderText
=
"Last Hire Date"
SortExpression
=
"HireDate"
DataField
=
"HireDate"
></
telerik:GridBoundColumn
>
</
Columns
>
<
RowIndicatorColumn
Visible
=
"False"
>
<
HeaderStyle
Width
=
"20px"
/>
</
RowIndicatorColumn
>
</
MasterTableView
>
</
telerik:RadGrid
>
<
asp:SqlDataSource
ID
=
"SqlSource1"
runat
=
"server"
ConnectionString
=
"Data Source=SomeDB;Initial Catalog=;User ID=;Password="
SelectCommand
=
"SELECT DISTINCT FullName, FirstName, LastName, Campus, Emp#, DeptName, convert(varchar,HireDate,101) as HireDate FROM [wwwEmployeePhotos] WHERE (UPPER(Campus) LIKE '%' + UPPER(@searchCampus_string) + '%') AND (UPPER(DeptName) LIKE UPPER(@searchDepartment_string)) AND (UPPER(FullName) LIKE '%' + UPPER(@searchName_string) + '%') ORDER by FullName"
ProviderName
=
"System.Data.SqlClient"
>
<
SelectParameters
>
<
asp:ControlParameter
ControlID
=
"ddLocation"
DefaultValue
=
"%"
Name
=
"searchCampus_string"
PropertyName
=
"SelectedValue"
/>
<
asp:ControlParameter
ControlID
=
"ddDepartment"
DefaultValue
=
"%"
Name
=
"searchDepartment_string"
PropertyName
=
"SelectedValue"
/>
<
asp:ControlParameter
ControlID
=
"txtSearchName"
DefaultValue
=
"%"
Name
=
"searchName_string"
PropertyName
=
"Text"
/>
</
SelectParameters
>
</
asp:SqlDataSource
>
</
div
>
This does work, there was a Null. Ugh.