Hi,
I have a simple databound grid (grdPermissions) that has one "tinyint" column with possible values of 0, 1, or 2, which stand for Deny, Grant, or Not Set correspondingly. This column is being added as a GridViewComboBoxColumn and bound to a List as shown in the code below. The problem is that when the grid is bound and the data displayed, the combobox does not display its data until clicked with the mouse. The combobox seems to have the correct value set, but shows nothing until clicked. Also, once the combobox is closed the cell returns to showing nothing. You can see the behaviour in the attached images; image1 shows the initial display of the grid, image2 shows how the cell displays the value when clicked, image3 shows the cell in another row displays its value but the previously selected combobox in the row above now displays no data.
What might I be doing wrong?
'**** BEGIN CODE ****
Imports Telerik.WinControls.UI
Imports System.Data
Imports System.Data.SqlClient
Public Class frmGroupPerms
Private Sub somefunction()
'** the GetGroupPermissions() function retrieves a table with the
'** following columns
'** GroupID int,
'** Name nvarchar(255),
'** Description nvarchar(255),
'** AppPermissionType nvarchar(30),
'** PermValue tinyint - can be 0, 1, or 2
Dim _groupPermissions As DataTable = GetGroupPermissions(_groupId)
_ConfigureGrid()
grdPermissions.DataSource = _groupPermissions
End Sub
Private Sub _ConfigureGrid()
Dim _perms As List(Of ComboItem) = New List(Of ComboItem)
_perms.Add(New ComboItem(0, "Deny"))
_perms.Add(New ComboItem(1, "Grant"))
_perms.Add(New ComboItem(2, "Not Set"))
Me.grdPermissions.AutoGenerateColumns = False
Me.grdPermissions.Columns.Clear()
Me.grdPermissions.Columns.Add(New GridViewTextBoxColumn("GroupId"))
Me.grdPermissions.Columns.Add(New GridViewTextBoxColumn("Name"))
Me.grdPermissions.Columns.Add(New GridViewTextBoxColumn("Description"))
Me.grdPermissions.Columns.Add(New GridViewTextBoxColumn("AppPermissionType"))
Dim _cmb As New GridViewComboBoxColumn()
_cmb.Width = 150
_cmb.Name = "PermValue"
_cmb.FieldName = "PermValue"
_cmb.HeaderText = "Permission"
_cmb.DataSource = _perms
_cmb.ValueMember = "ItemValue"
_cmb.DisplayMember = "ItemText"
Me.grdPermissions.Columns.Add(_cmb)
End Sub
Private Sub grdPermissions_DataBindingComplete(ByVal sender As Object, ByVal e As Telerik.WinControls.UI.GridViewBindingCompleteEventArgs) Handles grdPermissions.DataBindingComplete
grdPermissions.MasterTemplate.Columns("GroupId").IsVisible = False
grdPermissions.MasterTemplate.Columns("Name").Width = 150
grdPermissions.MasterTemplate.Columns("Description").Width = 150
grdPermissions.MasterTemplate.Columns("AppPermissionType").Width = 200
End Sub
End Class
Friend Class ComboItem
Public Property ItemText As String
Public Property ItemValue() As Short
''' <summary>
''' Initializes a new instance of the ComboItem class.
''' </summary>
''' <param name="itemValue"></param>
''' <param name="itemText"></param>
Public Sub New(ByVal itemValue As Short, ByVal itemText As String)
Me.ItemValue = itemValue
Me.ItemText = itemText
End Sub
End Class
'**** END CODE ****
I have a simple databound grid (grdPermissions) that has one "tinyint" column with possible values of 0, 1, or 2, which stand for Deny, Grant, or Not Set correspondingly. This column is being added as a GridViewComboBoxColumn and bound to a List as shown in the code below. The problem is that when the grid is bound and the data displayed, the combobox does not display its data until clicked with the mouse. The combobox seems to have the correct value set, but shows nothing until clicked. Also, once the combobox is closed the cell returns to showing nothing. You can see the behaviour in the attached images; image1 shows the initial display of the grid, image2 shows how the cell displays the value when clicked, image3 shows the cell in another row displays its value but the previously selected combobox in the row above now displays no data.
What might I be doing wrong?
'**** BEGIN CODE ****
Imports Telerik.WinControls.UI
Imports System.Data
Imports System.Data.SqlClient
Public Class frmGroupPerms
Private Sub somefunction()
'** the GetGroupPermissions() function retrieves a table with the
'** following columns
'** GroupID int,
'** Name nvarchar(255),
'** Description nvarchar(255),
'** AppPermissionType nvarchar(30),
'** PermValue tinyint - can be 0, 1, or 2
Dim _groupPermissions As DataTable = GetGroupPermissions(_groupId)
_ConfigureGrid()
grdPermissions.DataSource = _groupPermissions
End Sub
Private Sub _ConfigureGrid()
Dim _perms As List(Of ComboItem) = New List(Of ComboItem)
_perms.Add(New ComboItem(0, "Deny"))
_perms.Add(New ComboItem(1, "Grant"))
_perms.Add(New ComboItem(2, "Not Set"))
Me.grdPermissions.AutoGenerateColumns = False
Me.grdPermissions.Columns.Clear()
Me.grdPermissions.Columns.Add(New GridViewTextBoxColumn("GroupId"))
Me.grdPermissions.Columns.Add(New GridViewTextBoxColumn("Name"))
Me.grdPermissions.Columns.Add(New GridViewTextBoxColumn("Description"))
Me.grdPermissions.Columns.Add(New GridViewTextBoxColumn("AppPermissionType"))
Dim _cmb As New GridViewComboBoxColumn()
_cmb.Width = 150
_cmb.Name = "PermValue"
_cmb.FieldName = "PermValue"
_cmb.HeaderText = "Permission"
_cmb.DataSource = _perms
_cmb.ValueMember = "ItemValue"
_cmb.DisplayMember = "ItemText"
Me.grdPermissions.Columns.Add(_cmb)
End Sub
Private Sub grdPermissions_DataBindingComplete(ByVal sender As Object, ByVal e As Telerik.WinControls.UI.GridViewBindingCompleteEventArgs) Handles grdPermissions.DataBindingComplete
grdPermissions.MasterTemplate.Columns("GroupId").IsVisible = False
grdPermissions.MasterTemplate.Columns("Name").Width = 150
grdPermissions.MasterTemplate.Columns("Description").Width = 150
grdPermissions.MasterTemplate.Columns("AppPermissionType").Width = 200
End Sub
End Class
Friend Class ComboItem
Public Property ItemText As String
Public Property ItemValue() As Short
''' <summary>
''' Initializes a new instance of the ComboItem class.
''' </summary>
''' <param name="itemValue"></param>
''' <param name="itemText"></param>
Public Sub New(ByVal itemValue As Short, ByVal itemText As String)
Me.ItemValue = itemValue
Me.ItemText = itemText
End Sub
End Class
'**** END CODE ****