0

我正在读取一个文件,我从中创建一个数据集,我需要从该数据集创建一个报告,但此代码不起作用。所以也许有人可以告诉我我做错了什么,我真的很感激它或提出另一种解决这个问题的方法。

BuildataSet 功能正常工作,创建报告给我带来了问题。

public DataSet BuildDataSet(string file,string tableName,string delimeter)
{
  //create our DataSet
  DataSet domains = new DataSet();
   //add our table
   domains.Tables.Add(tableName);
    String c =    "VOYAGE|SAILDATE|DELIVERYDATE|AMENITY|QTY|COMPLIMENTS|MESSAGE|CABIN|1STPAXNAME|"
    +"1STPAXLAST|2NDPAXNAME|2NDPAXLAST|3RDPAXNAME|3RDPAXLAST|4THPAXNAME|4THPAXLAST|SHIP|TYPE|DELIVERYTYPE|DROOM|SEATING|TABLE|GHOSTCOLUMN";

try
{
    //first make sure the file exists
    if (File.Exists(file))
    {
        //create a StreamReader and open our text file
        StreamReader reader = new StreamReader(file);

        //read the first line in and split it into columns
        string [] columns = c.Split('|');
        //now add our columns (we will check to make sure the column doesnt exist before adding it)
        foreach (string col in columns)
        {
            //variable to determine if a column has been added
            bool added = false;
            string next = "";
            //our counter
            int i = 0;
            while (!(added))
            {
                string columnName = col;


                    //now check to see if the column already exists in our DataTable
                    if (!(domains.Tables[tableName].Columns.Contains(columnName)))
                    {
                        //since its not in our DataSet we will add it
                        domains.Tables[tableName].Columns.Add(columnName, typeof(string));
                        added = true;
                    }//end if
                    else
                    {
                        //we didnt add the column so increment out counter

                        i++;
                        next = "_" + i.ToString();
                        break;
                    }//end else


             }
        }
        //now we need to read the rest of the text file
        string data = reader.ReadToEnd();

        //now we will split the file on the carriage return/line feed
        //and toss it into a string array
        string [] rows = data.Split("\r".ToCharArray());
        //now we will add the rows to our DataTable
        foreach (string r in rows)
        {
            string[] items = r.Split(delimeter.ToCharArray());
            //split the row at the delimiter
            //for (int i = 0; i <= items.Count() - 1; i++)
            //{

                domains.Tables[tableName].Rows.Add(items);

            //}
        }
    }
    else
    {
        throw new FileNotFoundException("The file " + file + " could not be found");
    }

}
catch (FileNotFoundException ex)
{
    _message = ex.Message;
    return null;
}
catch (Exception ex)
{
    _message = ex.Message;
    return null;
}

//now return the DataSet
 return domains;

} //#endregion

   protected void Button1_Click(object sender, EventArgs e)
{



    DataSet ds = BuildDataSet(@"C:/Documents/GIFTCDS.TXT", "MyNewTable", "|");
    GridView1.DataSource = ds;
    GridView1.DataBind();


    ReportDataSource rds = new ReportDataSource("MyNewTable", ds.Tables[0]);
    ReportViewer1.LocalReport.DataSources.Clear();
    ReportViewer1.LocalReport.DataSources.Add(rds);
    ReportViewer1.DataBind();
    ReportViewer1.LocalReport.Refresh();


}
4

0 回答 0