2015-01-02 3 views
1

Пусть у меня есть DataGridView, с загрузкой из TableAdapter, содержание которого составляет от 2 соединяемых таблиц, так Таблица С:TableAdapter UpdateCommand на присоединяемой таблицы

SELECT A.*, B.name LEFT JOIN B ON B.id = A.b_id 

Нет UpdateCommand генерируется для этого с помощью мастера, я знать. Однако, если данные таблицы почти полностью взяты из таблицы A, а таблица B объединяется только для предоставления имени данных, на которые ссылается идентификатор в таблице A, могу ли я просто указать свой собственный UpdateCommand, который обновляет таблицу A, если пользователь изменяет значение в DataGridView?

То есть, я хотел бы установить UpdateCommand таблицы C, чтобы:

UPDATE A SET value = [[new value]] WHERE id = [[current item]] 

Если хуже приходит к худшему, я могу сделать диалоговое окно для ввода пользователя своего нового значения в и сделать это таким образом. Просто кажется, что было бы намного проще сделать это, как указано выше. Будет ли этот метод работать?

ответ

1

Вы можете сделать именно то, что хотите, в пределах DataAdapter. Вы можете найти a good walkthrough on MSDN.

Не видя ваш код, установка адаптера может выглядеть примерно так:

var dataAdapter = new SqlDataAdapter(
    "SELECT A.*, B.name FROM A LEFT JOIN B ON B.id = A.b_id", sqlConn); 

var dataAdapter.UpdateCommand = new SqlCommand(
    "UPDATE A SET value = @Value WHERE id = @Id", sqlConn); 

// Define the parameters to be used in the update command. 
dataAdapter.UpdateCommand.Parameters.Add(
    "@Value", SqlDbType.NVarChar, 100, "Value_Column_Name"); 

dataAdapter.UpdateCommand.Parameters.Add(
    new SqlParameter("@Id", SqlDbType.Int) 
    { 
     SourceColumn = "Id_Column_Name" 
    }); 
Смежные вопросы