2012-10-11 111 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 –

相關問題