【问题标题】:Creating GridView custom cells创建 GridView 自定义单元格
【发布时间】:2014-12-24 18:49:50
【问题描述】:

我有Winforms 申请和Telerik GridView

我想要实现的只是自定义创建自定义单元格并将PregressBar 添加到Cell GridView 所以我找到了解释如何做到这一点的this 教程,但由于我是一个非常新的开发人员,所以我很难理解如何使用它来实现它。

我所做的只是创建这 2 个类:ProgressBarCellElementProgressBarColumn 所以我问你是否可以帮助我。 我知道问这种问题是不常见的,但我尽力了,但我仍然不知道如何使用它。

更新:

我尝试过的这个操作系统(不工作):

private void radGridView1_CreateCell(object sender, GridViewCreateCellEventArgs e)
{
    if (e.CellType == typeof(GridDataCellElement))
    {
        GridViewDataColumn dataColumn = e.Column as GridViewDataColumn;
        if (dataColumn.UniqueName == "Progress")
        {
            e.CellType = typeof(ProgressBarColumn);
        }
    }
}

【问题讨论】:

  • 我已经做到了,但有时他们需要几天才能回答,无论如何这只是一个问题如何使用代码示例,正如我提到的,因为我是一个非常新的开发人员,所以我很难做到那
  • 尝试自己解决问题,然后回到这里就您发布的代码提出具体问题。
  • 我只在示例中创建了这两个类,但是如果我以常规方式将项目添加到我的 GridView 中,我看不到任何 ProgressBar,我完全迷失了
  • winforms 不支持自定义内容。改用 WPF。
  • 我正在使用支持自定义的Tekerik

标签: c# .net winforms telerik radgridview


【解决方案1】:

这是一个例子。这是主要形式。

Public Partial Class Form1
Inherits Form

Private radGridView1 As RadGridView
Public Sub New()
    InitializeComponent()

    radGridView1 = New RadGridView()
    Me.Controls.Add(radGridView1)
    radGridView1.Dock = DockStyle.Fill

    Dim textCol As New GridViewTextBoxColumn("Name")
    radGridView1.Columns.Add(textCol)

    Dim ageCol As New GridViewDecimalColumn("Age")
    radGridView1.Columns.Add(ageCol)

    Dim prgsCol As New ProgressBarColumn("Progress")
    radGridView1.Columns.Add(prgsCol)

    radGridView1.Rows.Add("Steve", 21, 15)
    radGridView1.Rows.Add("John", 43, 90)

    radGridView1.Rows.Add("Mike", 23, 66)
End Sub
End Class

这是进度条单元格。

Class ProgressBarCellElement
Inherits GridDataCellElement
Private radProgressBarElement As RadProgressBarElement

Public Sub New(column As GridViewColumn, row As GridRowElement)
    MyBase.New(column, row)
End Sub

Protected Overrides Sub CreateChildElements()
    MyBase.CreateChildElements()

    radProgressBarElement = New RadProgressBarElement()
    Me.Children.Add(radProgressBarElement)
End Sub

Protected Overrides Sub SetContentCore(value As Object)
    If Me.Value IsNot Nothing AndAlso Me.Value <> DBNull.Value Then
        Me.radProgressBarElement.Value1 = Convert.ToInt32(Me.Value)
    End If
End Sub

Protected Overrides ReadOnly Property ThemeEffectiveType() As Type
    Get
        Return GetType(GridDataCellElement)
    End Get
End Property

Public Overrides Function IsCompatible(data As GridViewColumn, context As Object) As Boolean
    Return TypeOf data Is ProgressBarColumn AndAlso TypeOf context Is GridDataRowElement
End Function
End Class

这是进度条列。

Public Class ProgressBarColumn
Inherits GridViewDataColumn
Public Sub New(fieldName As String)
    MyBase.New(fieldName)
End Sub

Public Overrides Function GetCellType(row As GridViewRowInfo) As Type
    If TypeOf row Is GridViewDataRowInfo Then
        Return GetType(ProgressBarCellElement)
    End If
    Return MyBase.GetCellType(row)
End Function
End Class

【讨论】:

    猜你喜欢
    • 2015-03-22
    • 2015-10-18
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2018-11-28
    相关资源
    最近更新 更多