2017-07-10 2 views
1

meine Aufgabe einfach ist, ich möchte nur Daten aus gridview nehmen Reihen Zufallsfunktion REngine komme zurück und zeigen sie in der Gridview zurück, habe ich versucht, dassDaten abrufen von Gridview RdotNet (R.net)

  TextBox_Ville.Text = "I'm here"; 
      DataTable dtb = (DataTable)Session["Grid"]; 
      REngine engine = REngine.GetInstance(); 
      string[,] stringData = new string[dtb.Rows.Count, dtb.Columns.Count]; 
      for (int row = 0; row < dtb.Rows.Count; row++) 
      { 
       for (int col = 0; col < dtb.Columns.Count; col++) 
       { 
        stringData[row, col] = dtb.Rows[row].ItemArray[col].ToString(); 
       } 
      } 
      CharacterMatrix matrix = engine.CreateCharacterMatrix(stringData); 
      engine.SetSymbol("myRDataFrame", matrix); 
      engine.Evaluate("myRDataFrame <- as.data.frame(myRDataFrame, stringsAsFactors = FALSE)"); 
      // engine.Evaluate("str(myRDataFrame)"); 
      DataFrame dataset = engine.Evaluate("myRDataFrame[sample(nrow(myRDataFrame), 1), ]").AsDataFrame(); 

      DataTable dtt = new DataTable(); 
      for (int i = 0; i < dataset.ColumnCount; ++i) 
      { 
       dtt.Columns.Add(new DataColumn(dataset.ColumnNames[i])); 
      } 

      for (int i = 0; i < dataset.RowCount; ++i) 
      { 
       var row = dtt.NewRow(); 

       for (int k = 0; k < dataset.ColumnCount; ++k) 
       { 
        row[dataset.ColumnNames[k]] = dataset[i, k]; 
       } 

       dtt.Rows.Add(row); 
      } 

      GridView1.DataSource = dtt; 
      GridView1.DataBind(); 

Aber es gibt mir Stackoverflow Fehler, kann mir bitte jemand helfen. Danke :)

+0

Wenn Sie dies als eigenständiges Beispiel neu schreiben, ist es für die Community einfacher, Hilfe bereitzustellen. Ich kann Ihren Code nicht so ausführen, wie er ist, und ich weiß nicht, auf welcher Zeile er fehlschlägt. –

Antwort

0

Ich sehe Sie ausgelassen Typ beim Erstellen Ihrer DataTable. Vielleicht ist das das Problem?

dtt.Columns.Add(new DataColumn(dataset.ColumnNames[i], typeof(string))); 

Das andere, was mir aufgefallen ist, dass Sie ‚Reihe‘ als Iterator in einer for-Schleife verwenden, dann Sie es verwenden, wieder ein DataRow zu bauen. Ich kann nicht sagen, ob es ein Problem ist oder nicht.