DataRow opfattes som array? System.IndexOutOfRangeException
Hej.Jeg er ret grøn til ASP.NET, så det er sikkert en ret banal fejl jeg har lavet.
Jeg indlæser en log fil i et string-array, som jeg derefter gerne vil smide over i en DataTable, som til sidst gerne skal vises i et DataGrid.
Følgende fejl opstår:
Cannot find column 1.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.IndexOutOfRangeException: Cannot find column 1.
Source Error:
Line 59: for (int i = 0; i < strFields.Length; i++)
Line 60: {
Line 61: dr[i] = strFields[i];
Line 62: Response.Write("Efter Row er tilføjet");
Line 63:
--
I får lige koden.
Min aspx fil :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form method="post" runat="server">
<div>
<asp:Button ID="btnAabn" runat="server" Text="Åbn log-fil" OnClick="btnAabn_Click" />
<asp:DataGrid ID="dgLog" runat="server" AutoGenerateColumns="false">
</asp:DataGrid>
<br />
</div>
</form>
</body>
</html>
--
Min cs fil :
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
//using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnAabn_Click(object sender, EventArgs e)
{
Response.Write("Start");
int testest = 0;
String tmpSti = "c:\\";
String tmpFil = "ex051207.log";
TextReader trLogFile = new StreamReader(tmpSti + tmpFil, System.Text.Encoding.Default);
DataTable dt = new DataTable();
DataRow dr;
while (true)
{
Response.Write("Efter TextReader er åbnet");
bool arg = true;
string[] strFields;
char[] separators = { ' ' };
string strLine = trLogFile.ReadLine();
if (strLine == null) break;
if (strLine.Substring(0, 1).Equals("#"))
{
if (strLine.Substring(0, 8).Equals("#Fields:"))
{
strFields = strLine.Split(separators);
for (int i = 0; i < strFields.Length; i++)
{
if (i > 0)
{
if (arg) dt.Columns.Add(new DataColumn(strFields[i], typeof(string)));
arg = false;
Response.Write("Efter columns er tilføjet");
}
}
}
}
else
{
Response.Write("Start på tilføj Rows");
testest++;
strFields = strLine.Split(separators);
dr = dt.NewRow();
for (int i = 0; i < strFields.Length; i++)
{
dr[i] = strFields[i];
Response.Write("Efter Row er tilføjet");
}
dt.Rows.Add(dr);
dt.AcceptChanges();
Response.Write("Efter accept af tilføjelse");
}
DataView dv = new DataView(dt);
dgLog.DataSource = dv;
dgLog.DataBind();
Response.Write("Efter databind");
}
trLogFile.Close();
Response.Write("Efter TextReader er lukket");
Response.Write("Slut");
}
}
--
Jeg har kigget på problemet hele dagen, og kan ikke se løsningen.
Håber I kan hjælpe.
Mvh.
/Mnc
