0

この質問のバリエーションが多く寄せられていることを知っています。私は長い間答えを探していて、さまざまなコードブロックを試してきました。これが私が今持っているもので、0からgridview1.rows.count-1までループしています。このコードは、RowDataBound イベントにあります。

    Dim test As String
    For i As Integer = 0 To GridView1.Rows.Count - 1
        test = GridView1.Rows(i).Cells.Item(e.Row.RowIndex).Text.ToString
        If test = " " Then
            e.Row.Cells(i).Visible = False
        End If

    Next

エラーが発生するたびに:指定された引数は有効な値の範囲外でした。パラメータ名: この行のインデックス

   test = GridView1.Rows(i).Cells.Item(e.Row.RowIndex).Text.ToString

ただし、エラーは行範囲の外に出ているためだと思いますが、修正方法がわかりません。すべての行と列の各セルを正常にチェックし、何も返さない列を非表示にするにはどうすればよいですか。

これで空白の各列内の実際のセルをすべて非表示にできるようになりました

 Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As      System.Web.UI.WebControls.GridViewRowEventArgs)
  Dim GridView1 As GridView = FormView1.FindControl("GridView1")
    For Each row As GridViewRow In GridView1.Rows
      For i As Integer = 0 To row.Cells.Count - 1
       Dim strtest As String = row.Cells(i).Text.ToString
         If strtest = " " Then
         row.Cells(i).Visible = False
         End If      
        Next
    Next

ただし、autogeneratecolumns を使用すると列が存在することが認識されないため、列を非表示にすることはできません。コード GridView1.Columns(i).visible = false の範囲がないため、範囲外エラーがスローされます。列

4

3 に答える 3

0
For Each row As GridViewRow in GridView1.rows // rows
dim someval as String
 for x= 0 to  GridView1.Columns.Count // cols 
  if someval=  = row.Cells[x].Text;
 GridView1.Columns(x).Visible = false;
end if
 next x
Next

手動で入力したタイプミスをチェックしてください'

于 2014-07-23T17:16:15.427 に答える
0

このようなことを試してください。

しかし、行をバインドするたびにグリッド全体を読んでいるように見えることをおそらく指摘するでしょう。これは不必要に思えます。むしろ、グリッドビューが列を非表示にした後に呼び出すことができる別のメソッドを持つことができdataboundます。

以下のコードを関数に入れ、グリッドのデータバインディングの後にこの関数を呼び出します。

Private Sub CheckForEmptyValues()
    Dim dgv As DataGridView = GridView1

    For r As Integer = 0 To dgv.RowCount - 1
       For c As Integer = 0 To dgv.ColumnCount - 1
            Dim cellValue as string = dgv.Rows(r).Cells(c).Value
            If cellValue = " " Then
               dgv.Rows(r).Cells(c).Visible = False
            End If
        Next
    Next
End Sub
于 2014-07-23T17:25:51.003 に答える