программно изменять имена таблиц в строгом наборе данных .net - PullRequest
1 голос
/ 29 октября 2010

привет Я разработал приложение с использованием набора данных со строгим типом данных .net Framework 3.5. Есть ли способ изменить исходную таблицу для адаптера таблицы программно? Thnx

1 Ответ

0 голосов
/ 29 октября 2010

Есть несколько способов сделать это. Сначала вы можете просто добавить новый запрос, который извлекается из другой таблицы, а затем выполнить метод для этого запроса, если столбцы совпадают, это будет работать.

Если вам нужно динамически изменить один из операторов, к которому вы можете получить доступ к коллекции команд адаптера таблицы, он защищен, поэтому самый простой способ сделать это - создать частичный класс, расширяющий класс, сгенерированный дизайнер. Как только вы сделаете это, вы можете добавить свой собственный метод для возврата данных. Вы можете использовать adapter.CommandCollection [0] .CommandText , чтобы получить и установить SQL для команды GetData по умолчанию, которая создается.

После того, как вы это сделаете, вы можете изменить его, очистить параметры, добавить новые параметры или все, что вы хотите сделать, затем установить CommandText с измененным SQL-кодом и вызвать GetData или любое другое имя, которое вы назвали команда, и она будет выполняться и возвращаться как обычно.

Вот пример кода:

using System.Data.SqlClient;
namespace DataTableAdapters
{
    public partial class Data_ItemTableAdapter
    {

        public Data.Data_ItemDataTable GetDynamicExample(string SearchValue)
        {

            using (Data_ItemTableAdapter a = new Data_ItemTableAdapter())
            {
                SqlCommand cmd = a.CommandCollection[0];
                cmd.Parameters.Clear();
                string SQL = @"Select Data_Item_ID, Data from Data_Item where
                        SearchValue = @SearchValue";
                cmd.CommandText = SQL;
                cmd.Parameters.AddWithValue("@SearchValue", SearchValue);
                return a.GetData();

            }

        }
    }
}
...