【问题标题】:Gridview combine autogenerated fields and template fieldsGridview 结合了自动生成的字段和模板字段
【发布时间】:2010-08-17 12:39:42
【问题描述】:

我的 gridview 有几个 sqldatasources。所有列都是自动生成的。但是,它们都有一些一致的字段,我想将这些字段设为模板字段,以便我可以为它们修改编辑模板,例如添加下拉菜单。这可能吗?如果是这样,怎么做? :-D 谢谢!

【问题讨论】:

    标签: vb.net templates gridview drop-down-menu auto-generate


    【解决方案1】:

    要将特定的自动生成的列替换为模板列,只需定义模板列并在代码中隐藏自动生成的列。默认情况下,自动生成的列将出现在您的模板列之后,因此如果您希望它们被适当地放置,您也可以在代码中交换输出。

    在这个例子中,我正在更改一个 gridview 的输出,它有两个模板列和两个自动生成的列,总共 4 个。我想用一个模板列(索引 1)替换我的最后一个自动生成的列(索引 3) ),但我希望我的自动生成的列之一(索引 2)更靠左,所以我用模板列(索引 1)切换它。

    Private Sub gv_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gv.RowDataBound
        'hide Column 3'
        e.Row.Cells(3).Visible = False
    
        'Swap the results for Column 1 and Column 2'
        Dim swap = e.Row.Cells(1).Text
        e.Row.Cells(1).Text = e.Row.Cells(2).Text
        e.Row.Cells(2).Text = swap
    End Sub
    

    这相当简单,不需要任何额外的类。

    【讨论】:

    • 有没有办法通过他们的名字设置可见性?不幸的是,虽然列是一致的,但它们并不总是处于相同的位置。
    • 按名称获取索引: Dim x As Integer Dim y As Data.DataRowView y = e.Row.DataItem x = y.Row.Table.Columns.IndexOf("Status") 不幸的是设置了可见性为 false 仅针对该行执行此操作,因此所有列都变得不匹配。我必须想办法隐藏整列而不是单元格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多