or

<telerik:RadGrid runat="server" ID="rgStuff" AllowSorting="true" AllowFilteringByColumn="true" OnNeedDataSource="rgStuff_NeedDataSource" AutoGenerateColumns="False"> <MasterTableView> <Columns> <telerik:GridBoundColumn HeaderText="Generic1" DataField="Generic1"></telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Generic2" DataField="Generic2"></telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Bob1" DataField="Bob1"></telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Bob2" DataField="Bob2"></telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Steve1" DataField="Steve1"></telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Steve2" DataField="Steve2"></telerik:GridBoundColumn> </Columns> </MasterTableView></telerik:RadGrid>class Generic{ public string Generic1 { get; set; } public string Generic2 { get; set; }}class Bob : Generic{ public string Bob1 { get; set; } public string Bob2 { get; set; }}class Steve : Generic{ public string Steve1 { get; set; } public string Steve2 { get; set; }}public partial class InheritanceTest : System.Web.UI.Page{ protected void rgStuff_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { rgStuff.DataSource = new List<Generic>() { new Bob() { Generic1 = "First", Generic2 = "Bob", Bob1 = "Bob1-1", Bob2 = "Bob1-2" }, new Bob() { Generic1 = "Second", Generic2 = "Bob", Bob1 = "Bob2-1", Bob2 = "Bob2-2" }, new Steve() { Generic1 = "First", Generic2 = "Steve", Steve1 = "Steve1-1", Steve2 = "Steve1-2" }, new Steve() { Generic1 = "Second", Generic2 = "Steve", Steve1 = "Steve2-1", Steve2 = "Steve2-2" } }; }}Hi
I am going round in circles trying to beat this problem which I fairly sure is a result trying bind the value of the combos box item to a column which may contain null value. The error occurs as soon as the the grid's 'Edit' button is clicked with some database items/
The relevant grid declaration is like this
<telerik:GridTemplateColumn DataField="Marshals" HeaderText="Marshal" SortExpression="Marshals" UniqueName="Marshals" Visible="False"> <EditItemTemplate> <telerik:RadComboBox ID="RadComboBox1" Runat="server" AppendDataBoundItems="True" SelectedValue='<%# bind("Marshals") %>' Width="225px"> </telerik:RadComboBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="MarshalsLabel" runat="server" Text='<%# Eval("Marshals") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn>Protected Sub RadGrid1_ItemCreated(sender As Object, e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemCreated If TypeOf e.Item Is GridEditFormItem AndAlso e.Item.IsInEditMode Then Dim editform As GridEditFormItem = DirectCast(e.Item, GridEditFormItem) Dim combo As RadComboBox = DirectCast(editform.FindControl("RadComboBox1"), RadComboBox) Bind(combo) Dim combo2 As RadComboBox = DirectCast(editform.FindControl("RadComboBox2"), RadComboBox) Bind(combo2) End If End Sub Private Sub Bind(combo As RadComboBox) Dim strMemberID As String = "" Dim sb As New StringBuilder Dim Ds As New DataSet Dim UserTable As New DataTable("UserTable") UserTable.Columns.Add("Text", GetType(String)) UserTable.Columns.Add("Value", GetType(String)) UserTable.Rows.Add("Pick one", "0") Dim rdr As SqlDataReader = ConstClass.getCurrentMembers() If rdr.HasRows Then While rdr.Read() ' build a row of the combo ' Text If Not IsDBNull(rdr("FirstName")) Then sb.Append(rdr("FirstName")) Else sb.Append("") End If sb.Append(" ") If Not IsDBNull(rdr("LastName")) Then sb.Append(rdr("LastName")) Else sb.Append("") End If sb.Append(" & ") If Not IsDBNull(rdr("PartnerFirstName")) Then sb.Append(rdr("PartnerFirstName")) Else sb.Append("") End If sb.Append(" ") If Not IsDBNull(rdr("PartnerLastName")) Then sb.Append(rdr("PartnerLastName")) Else sb.Append("") End If If Not IsDBNull("MemberID") Then strMemberID = rdr("MemberID") Else strMemberID = "0" End If UserTable.Rows.Add(sb.ToString, strMemberID) sb.Clear() End While UserTable.AcceptChanges() Ds.Tables.Add(UserTable) Ds.AcceptChanges() rdr.Close() LiteralTest.Text = sb.ToString Else UserTable.Rows.Add(sb.ToString, strMemberID) UserTable.AcceptChanges() Ds.Tables.Add(UserTable) Ds.AcceptChanges() rdr.Close() End If combo.DataTextField = "Text" combo.DataValueField = "Value" combo.DataSource = Ds End Sub<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" EnableAJAX="True"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RemoveFeed"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="ListBoxFeeds" LoadingPanelID="ajaxLoading" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings></telerik:RadAjaxManage><telerik:RadListBox AppendDataBoundItems="true" runat="server" ID="ListBoxFeeds" CssClass="boxComments" AutoPostBack="True" RegisterWithScriptManager="True" AllowReorder="False" AllowTransfer="False" EnableDragAndDrop="False" AllowAutomaticUpdates="True"> <ItemTemplate> <asp:Button ID="RemoveFeed" OnClick="removeFeed_Click" CssClass="removeItem" runat="server" Text="Test"/> </ItemTemplate> </telerik:RadListBox>
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource" OnUpdateCommand="RadGrid1_UpdateCommand"> <MasterTableView> <Columns> <telerik:GridTemplateColumn> <ItemTemplate> <asp:HyperLink NavigateUrl='<%# Bind("Name", "mailto:{0}") %>' Text='<%# Bind("Name") %>' runat="server" ID="hlEmail"></asp:HyperLink> <br /> <a href='<%# "mailto:" + Eval("Name") %>'><%# Eval("Name") %></a> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridEditCommandColumn> </telerik:GridEditCommandColumn> </Columns> </MasterTableView> </telerik:RadGrid>