2012-10-11 65 views
0

我的VB.NET应用程序有一个datagridview(Named =“DGV”),它有4列。 我想用数据网格行写入多个文本文件。 文本文件的名称应该是第1列的单元格的值,而文本文件的文本应该是第3列单元格的值。 附加的图像将清除每一件事。 请帮忙。 These values are just examples and the actual values are totally differ from each other将每个Datagrid单元格写入唯一的文本文件

回答

0

我设计这个代码,我不知道它的工作是否完美。所有箱子 首先,在你的代码后,“公共类Form1的”顶部

Public Property SelectedIdexLock As Boolean = False 

现在Datagride1选择改变一个布尔属性:

If SelectedIdexLock = True Then 
      My.Computer.FileSystem.WriteAllText("C:\Users\YOUR USER NAME HERE\Desktop\" & Datagride1.SelectedCells(0).Value.ToString & ".txt", Datagride1.SelectedCells(2).Value.ToString, False) 
     End If 

确定这是最后一步,在测试按钮( Button1)点击:

 Dim RowsCount As Integer = Datagride1.Rows.Count.ToString 
     Datagride1.Rows(0).Selected = True 
     Datagride1.Rows(0).Selected = False 

     For Each row In Datagride1DataSet.Table1.Rows 

      Dim i As Integer 
      For i = 0 To RowsCount 
       If i = RowsCount Then 
        SelectedIdexLock = False 
        Exit Sub 
       Else 
        SelectedIdexLock = True 
        Datagride1.Rows(i).Selected = True 
       End If 

      Next 

     Next 

您已完成!

1

这是一种方法。首先,我从DataGridView创建一个DataTable以简化任务。然后我使用Linq-To-DataTable得到我需要的(dir是您的目录的路径)。

Dim table = New DataTable() 
For i As Int32 = 0 To dgv.Columns.Count - 1 
    table.Columns.Add(dgv.Columns(i).Name) 
Next 

For Each gvRow As DataGridViewRow In dgv.Rows 
    Dim row = table.Rows.Add() 
    For col As Int32 = 0 To dgv.Columns.Count - 1 
     row(col) = gvRow.Cells(col).Value 
    Next 
Next 

Dim fileInfos = From r In table 
       Select New With { 
        .File = New FileInfo(Path.Combine(dir, r.Field(Of String)(0))), 
        .Content = r.Field(Of String)(2) 
       } 

现在创建文本文件,并写入文本:

For Each fileInfo In fileInfos 
    Try 
     fileInfo.File.Create() 
     Using writer = fileInfo.File.CreateText() 
      writer.Write(fileInfo.Content) 
     End Using 
    Catch ex As Exception 
     ' log etc. 
    End Try 
Next 

我使用.NET 2.0版,我不能改变它

这里的.NET 2版本:

For Each row As DataRow In table.Rows 
    If Not row.IsNull(0) AndAlso row(0).ToString().Length <> 0 Then 
     Dim path = IO.Path.Combine(dir, row(0).ToString()) 
     Dim file = New IO.FileInfo(path) 
     Try 
      file.Create() 
      Using writer = file.CreateText() 
       Dim content = "" 
       If Not row.IsNull(2) Then content = row(2).ToString() 
       writer.Write(content) 
      End Using 
     Catch ex As Exception 
      ' log etc. 
     End Try 
    End If 
Next 
+0

好的,我正在尝试..并感谢您的回复。 @Schmelter –

+0

Dim fileInfos = From r在表 在这一行中,“table”是高亮,红色线。 并发生以下错误。 “System.Data.DataTable”类型的表达式不可查询。确保您不缺少LINQ提供程序的程序集引用和/或命名空间导入。 @Tim Schmelter –

+0

我使用的是.NET 2.0版本,因此我现在正在开发的应用程序实际上是我以前发布的应用程序的更新,所以我不能更改它。所以我不能改变目标框架。 @Tim Schmelter –

相关问题