or
<div id="RadSiteMap1" class="RadSiteMap RadSiteMap_Default" StartingNodeOffset="0"> |
<!-- 2009.3.1319.20 --><ul class="rsmList rsmLevel rsmTwoLevels"> |
<li class="rsmItem"><a class="rsmLink" href="/1.aspx">1</a><ul class="rsmList rsmLevel1"> |
<li class="rsmItem"><div class="rsmTemplate"> |
<a href="/2a.aspx"> |
2a</a> |
</div></li><li class="rsmItem"><div class="rsmTemplate"> |
<a href="/2b.aspx"> |
2b</a> |
</div></li><li class="rsmItem"><div class="rsmTemplate"> |
<a href="/2c.aspx"> |
2c</a> |
</div></li><li class="rsmItem"><div class="rsmTemplate"> |
<a href="/2d.aspx"> |
2d</a> |
</div></li> |
<a href="2.aspx">2</a> |
<div> |
<a href="2a.aspx">2a</a> |
<span class="qmdivider qmdividerx" ></span> |
<a href="2b.aspx">2b</a> |
<span class="qmdivider qmdividerx" ></span> |
<a href="2c.aspx">2c</a> |
<span class="qmdivider qmdividerx" ></span> |
<a href="2d.aspx">2d</a> |
</div> |
<
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
>