Создание временной таблицы
От: McFozzy  
Дата: 21.09.07 12:10
Оценка:
я делаю редакитование заказчика.
В форме кроме названия, кода нужно зделать возможность ввода контактов заказчика.

Как я это делаю:
в Page_Load создаю таблицу, затем ету таблицу помещаю в ViewState и связываю обьект GridView с етой таблицей:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim table As Data.DataTable = New Data.DataTable()

    If Not IsPostBack Then
        table.Columns.Add("ID", System.Type.GetType("System.Int32"))
        table.Columns.Add("Name", System.Type.GetType("System.String"))
        table.Columns.Add("Phone", System.Type.GetType("System.String"))
        table.Columns.Add("Fax", System.Type.GetType("System.String"))
        table.Columns.Add("email", System.Type.GetType("System.String"))
        ViewState("tableContacts") = table

        GridView1.DataSource = table
        GridView1.DataBind()
    End If

End Sub


мой вопрос:
есть ли способ создать временную таблицу иными путями без большого количества строк?
Re: Создание временной таблицы
От: horry Россия  
Дата: 21.09.07 12:34
Оценка:
Здравствуйте, McFozzy, Вы писали:

MF>есть ли способ создать временную таблицу иными путями без большого количества строк?


Как минимум, два:
1. Создать схему данных (XMLSchema) и загрузить структуру из нее.
2. Создать массив с названиями столбцов и сделать Add в цикле. Т.к. все они, кроме ID, строковые, то даже тип хранить не придется (ID отдельно сделать — и все).
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re[2]: Создание временной таблицы
От: McFozzy  
Дата: 21.09.07 12:52
Оценка:
Здравствуйте, horry, Вы писали:

H>Здравствуйте, McFozzy, Вы писали:


MF>>есть ли способ создать временную таблицу иными путями без большого количества строк?


H>Как минимум, два:

H>1. Создать схему данных (XMLSchema) и загрузить структуру из нее.
H>2. Создать массив с названиями столбцов и сделать Add в цикле. Т.к. все они, кроме ID, строковые, то даже тип хранить не придется (ID отдельно сделать — и все).


вот вот, мне первый метод больше нравится — потому что он более универсален...

а как это зделать? может можно код?
Re[3]: Создание временной таблицы
От: horry Россия  
Дата: 21.09.07 19:51
Оценка:
Здравствуйте, McFozzy, Вы писали:

MF>Здравствуйте, horry, Вы писали:


H>>Здравствуйте, McFozzy, Вы писали:


MF>>>есть ли способ создать временную таблицу иными путями без большого количества строк?


H>>Как минимум, два:

H>>1. Создать схему данных (XMLSchema) и загрузить структуру из нее.
H>>2. Создать массив с названиями столбцов и сделать Add в цикле. Т.к. все они, кроме ID, строковые, то даже тип хранить не придется (ID отдельно сделать — и все).


MF>вот вот, мне первый метод больше нравится — потому что он более универсален...


MF>а как это зделать? может можно код?


Код на C# — с бейсиком не работаю, но отличия должны быть только в точках с запятыми — код типовой.

Вначале 1 раз ручками генерим таблицу и записываем ее в файл схемы:
DataTable table = new DataTable();
table.Columns.Add("ID", System.Type.GetType("System.Int32"));
table.Columns.Add("Name", System.Type.GetType("System.String"));
table.Columns.Add("Phone", System.Type.GetType("System.String"));
table.Columns.Add("Fax", System.Type.GetType("System.String"));
table.Columns.Add("email", System.Type.GetType("System.String"));

DataSet ds = new DataSet();
ds.Tables.Add(table);
ds.WriteXmlSchema("myfile.xsd");


В итоге должно получиться:

Затем этот код можно смело удалять, а загрузку структуры делать следующим образом:

DataSet ds = new DataSet();
ds.ReadXmlSchema("myfile.xsd");
DataTable table = ds.Tables[0];


Обращаю внимание на тот факт, что при запуске будет исключение, если не создать ни одной строки:

DataRow r = table.NewRow();
r["ID"] = 1;
r["Name"] = "qqq";
r["Phone"] = "www";
r["Fax"] = "eee";
r["email"] = "ggg";
table.Rows.Add(r);
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.