【问题标题】:Programmatically Create Checkbox Column inside a Gridview in ASP.NET以编程方式在 ASP.NET 中的 Gridview 内创建复选框列
【发布时间】:2014-09-29 10:19:08
【问题描述】:

我经常使用这段代码在 gridview 中为按钮、复选框、标签等创建模板字段:

<asp:TemplateField HeaderText="Data_1" ShowHeader="False" Visible="True">
 <ItemTemplate>
  <asp:Button ID="Button1" runat="server" 
  CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' 
  CommandName="Button1_Command" CssClass="round_button" 
  Height="20px" Width="20px" />
  </ItemTemplate>
  </asp:TemplateField>

但这一次,带有复选框的列数是不确定的。 (我需要在数据库中提取某些数据以确定我需要多少复选框列)。如何在页面加载时以编程方式创建复选框列?

谢谢:)

【问题讨论】:

    标签: asp.net vb.net gridview checkbox


    【解决方案1】:

    希望以下代码对您有所帮助。这不是一个完整的代码,但它会为您提供有关如何以编程方式创建复选框列的提示或想法。谢谢。

     <asp:GridView runat="server" ID="grdView">
            <Columns>
                <asp:TemplateField HeaderText="Button" ShowHeader="False" Visible="True">
                    <ItemTemplate>
                        <asp:Button ID="Button1" runat="server"
                            CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'
                            CommandName="Button1_Command" CssClass="round_button"
                            Height="20px" Width="20px" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    
    Public Class _Default
        Inherits Page
    
        Public Class GridViewCustomColumn
            Public Property ColumnName As Boolean
            Public Property HeaderName As String
        End Class
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
            Dim lists As New List(Of GridViewCustomColumn) From { _
                New GridViewCustomColumn() With {.ColumnName = False, .HeaderName = "TestHeaderName1"}, _
                New GridViewCustomColumn() With {.ColumnName = True, .HeaderName = "TestHeaderName2"}}
    
            grdView.AutoGenerateColumns = False
    
            Dim templateField As New TemplateField()
            templateField.ItemTemplate = New CheckBoxTemplateImpl("ColumnName")
            grdView.Columns.Add(templateField)
            grdView.DataSource = lists
            grdView.DataBind()
    
        End Sub
    
        Public Class CheckBoxTemplateImpl
            Implements ITemplate
    
            Public Property ColumnName As String
            Public Sub New(columnName As String)
                Me.ColumnName = columnName
            End Sub
    
            Public Sub InstantiateIn(container As Control) Implements ITemplate.InstantiateIn
                Dim chkBox As New CheckBox()
                AddHandler chkBox.DataBinding, AddressOf chkBox_DataBinding
                container.Controls.Add(chkBox)
            End Sub
    
            Private Sub chkBox_DataBinding(sender As Object, args As EventArgs)
                Dim chkBox As CheckBox = DirectCast(sender, CheckBox)
                Dim gridViewRow As GridViewRow = DirectCast(chkBox.NamingContainer, GridViewRow)
                Dim bindValue As Object = DataBinder.Eval(gridViewRow.DataItem, ColumnName)
                If bindValue IsNot Nothing Then
                    chkBox.Text = bindValue.ToString()
                End If
            End Sub
        End Class
    End Class
    

    【讨论】:

    • 哦。好的。我得到它。我现在就试试。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-11-13
    • 2010-11-27
    • 1970-01-01
    • 2011-03-06
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多