0

我有一个主表格。有一个链接标签。如果我单击它,将打开一个新表单,上面有一个数据网格和一个按钮。数据网格将填充新表单 Load 事件的数据。我以这种方式绑定数据源:

void BindDataSource( BindingSource^ BS, SqlDataAdapter^ DA, DataGridView^ DG, String^ SQLCommand )
{
DG->DataSource = BS;

//InsertDataToDataGrid( "select * from myTable", dataGridView10 );  
String^ connectionString = "database=myDataBase;server=myServer;UID=UserID;PWD=Password;";

// Create a new data adapter based on the specified query.
DA = gcnew SqlDataAdapter( SQLCommand, connectionString);

gcnew SqlCommandBuilder( DA );

DataTable^ table = gcnew DataTable();
DA->Fill( table );
BS->DataSource = table;

}//BindDataSource

如果我单击按钮,它应该保存更改。

我这样保存:
dAPcExceptions->Update( ( DataTable^ )bSPCExceptions->DataSource );

我在主窗体上使用此方法,它工作正常。但是,如果我单击按钮,则会出现错误:
update requires a valid updatecommand when passed datarow collection with modified rows

有人可以告诉我我做错了什么吗?

谢谢!

4

1 回答 1

0

我想您正在创建一个 SqlDataAdapter 并重新使用它以供将来使用。因此,您必须使用轨道引用将 SqlDataAdapter 参数作为输入/输出。

void BindDataSource( BindingSource^ BS, SqlDataAdapter^% DA, DataGridView^ DG, String^ SQLCommand ) 
{
...
// Create a new data adapter based on the specified query.
DA = gcnew SqlDataAdapter( SQLCommand, connectionString);
...
}//BindDataSource
于 2012-06-12T06:42:04.473 回答