Reputation: 281
I want to access a string array from one class to another but I have no idea how. I have tried to use BuilderPages_AutoGenerate reference = new BuilderPages_AutoGenerate();
but I can't access the variables using the reference
that I make with that line. I've also tried to make each of the arrays public but that is not allowed. Here is the code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Data;
using System.Data.Common;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Configuration;
public partial class BuilderPages_AutoGenerate : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int i = 0;
string[] nameHolder = new string[6];
string[] typeHolder = new string[6];
Console.WriteLine("Hello World");
string connection = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
SqlConnection conn = null;
conn = new SqlConnection(connection);
conn.Open();
DataTable schema = null;
using (var con = new SqlConnection(connection))
{
using (var schemaCommand = new SqlCommand("SELECT * FROM TestTable;", con))
{
con.Open();
using (var reader = schemaCommand.ExecuteReader(CommandBehavior.SchemaOnly))
{
schema = reader.GetSchemaTable();
}
}
}
foreach (DataRow col in schema.Rows)
{
Console.WriteLine("ColumnName={0}", col.Field<String>("ColumnName"));
nameHolder[i] = col.Field<string>("ColumnName");
typeHolder[i] = col.Field<Type>("DataType").ToString();
i++;
}
/* Testing if the name holder is getting the names of the columns in the given table */
test.Text = nameHolder[0];
test2.Text = nameHolder[1];
test3.Text = nameHolder[2];
test4.Text = nameHolder[3];
test5.Text = nameHolder[4];
test6.Text = nameHolder[5];
/* Testing to see if the type holders is getting the type of the columns */
type.Text = typeHolder[0];
type2.Text = typeHolder[1];
type3.Text = typeHolder[2];
type4.Text = typeHolder[3];
type5.Text = typeHolder[4];
type6.Text = typeHolder[5];
}
public class testing
{
//I want to use nameHolder and typeHolder here!!
}
}
Thank you in advanced.
Upvotes: 0
Views: 1411
Reputation: 34834
In the constructor of your testing
class, have it accept two parameters, one for _names
and other for _types
, like this:
public class testing
{
private string[] names;
private string[] types;
public testing(string[] _names, string[] _types)
{
names = _names;
types = _types;
}
// Add methods here that do something with names and types arrays
}
Upvotes: 0
Reputation: 203838
Your other method should accept the data that it needs as parameters, it shouldn't be reaching into the page class directly to access the data.
public class testing
{
public static void Foo(string[] nameHolder)
{
//do stuff with nameHolder
}
}
Or, if appropriate, accept the values in the constructor and store it as an instance field.
When the BuilderPages_AutoGenerate
either creates an instance of testing
or calls an appropriate method it can pass whatever it needs.
Upvotes: 4