【问题标题】:Get column value from a gridview using VB.net使用 VB.net 从 gridview 获取列值
【发布时间】:2013-08-21 04:40:44
【问题描述】:

我的 GridView 中有列(验证),此列包含两个值“v”或“notv”我想从 myGridview 获取值“v”并将其更改为“ VALIDATE' 和另一个 'notv' 到 'Not validate'.. 我试过 GridView1.Rows(i).Cells(10).Text 但是当我的 Gridview 没有任何改变显示出来。

这是我的代码:

当我点击按钮时显示 GridView:

<asp:GridView ID="GridView1" runat="server" CssClass="table" GridLines="None">
                           </asp:GridView>

'page.aspx.vb

cmd.Connection = cx
        cmd.CommandText = "select .., validate from table"
        da = New SqlDataAdapter(cmd)
        da.Fill(dt)
        GridView1.DataSource = dt
        GridView1.DataBind()
        For i = 0 To GridView1.Rows.Count - 1
            GridView1.Rows(i).Cells(0).ForeColor = System.Drawing.Color.Blue
            If GridView1.Rows(i).Cells(10).Text = "v" Then
                GridView1.Rows(i).Cells(10).Text = "VALIDATE"
                GridView1.Rows(i).Cells(10).ForeColor = System.Drawing.Color.Green
            ElseIf GridView1.Rows(i).Cells(10).Text = "Notv" Then
                GridView1.Rows(i).Cells(10).Text = "Not VALIDATE"
                GridView1.Rows(i).Cells(10).ForeColor = System.Drawing.Color.Red
            End If
        Next

感谢您的宝贵时间!

【问题讨论】:

  • 请发布您的 GridView 标记。

标签: asp.net vb.net gridview


【解决方案1】:

首先这应该在 rowdatabound 事件上

然后你可以尝试修剪空格,会不会造成问题

If GridView1.Rows(i).Cells(10).Text = "v" Then
                GridView1.Rows(i).Cells(10).Text = "VALIDATE"

改成

If GridView1.Rows(i).Cells(10).Text.Trim() = "v" Then
                GridView1.Rows(i).Cells(10).Text = "VALIDATE"

同时检查 rowdatabound 事件中的标题行

如果gridview有绑定字段,那么它应该可以工作,如果你使用模板,那么你应该使用find control来找到特定的控件,然后改变它的值

【讨论】:

    【解决方案2】:

    它对我有用,就像不使用 RowDataBound:

    下面是代码:

    For i = 0 To GridView1.Rows.Count - 1
            GridView1.Rows(i).Cells(0).ForeColor = System.Drawing.Color.Blue
            If GridView1.Rows(i).Cells(10).Text = "v" Then
                GridView1.Rows(i).Cells(10).Text = "VALIDATE"
                GridView1.Rows(i).Cells(10).ForeColor = System.Drawing.Color.Green
            ElseIf GridView1.Rows(i).Cells(10).Text = "Notv" Then
                GridView1.Rows(i).Cells(10).Text = "Not VALIDATE"
                GridView1.Rows(i).Cells(10).ForeColor = System.Drawing.Color.Red
            End If
        Next
    

    谢谢大家的回答!

    【讨论】:

      【解决方案3】:

      尝试在 GridView 的 RowDataBound 事件中进行更改,例如

       Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound
              'Do stuff with e.Row.Cells(0)
              'Do stuff with e.Row.Cells(10)
              'etc...
       End Sub
      

      它会为绑定到数据表的每一行触发,因此您不必遍历行。

      【讨论】:

      • 它需要转义标题行
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多