2

我已经用 SQL 编写了这个过程并且正在工作

ALTER proc [dbo].[gridcombo] (@tabela int)
as

/*1 Setores */
if  (@tabela=1)
begin
select setor_id, setor_nome  from tbl_setores
end
/*2  Atividade Economica   */
if  (@tabela=2)
begin
SELECT cnae_id, cnae_descricao  FROM tbl_CNAE
end

我使用此过程在 C# 中填充数据网格视图

    public SqlConnection sqlcon = Tconex.GetConnection();
    public SqlDataAdapter da2 = new SqlDataAdapter();
    public DataTable dt1 = new DataTable(); 

        SqlParameter tabela = new SqlParameter("@tabela", SqlDbType.Int);
        tabela.Value = 1;
        SqlCommand llena = new SqlCommand("gridcombo", sqlcon);
        llena.Parameters.Add(tabela);
        llena.CommandType = CommandType.StoredProcedure;
        da2.SelectCommand = llena;
        da2.Fill(dt1);
        BindingSource bsource = new BindingSource();
        bsource.DataSource = dt1;
        dataGridView1.DataSource = bsource;
        dataGridView1.AutoGenerateColumns = true;
        sqlcon.Close();

当我更改tabela.value数据网格时填充了一个或另一个表,效果很好。

但我无法通过数据网格编辑表格

        da2.UpdateCommand = new SqlCommandBuilder(da2).GetUpdateCommand();  
        da2.Update(dt1);
        sqlcon.Close();

我究竟做错了什么?为什么我不能更新表?

谢谢你的帮助!

4

1 回答 1

2

您必须在您PrimaryKey的表中返回您的表SelectCommand,以便正确生成您的更新命令

链接:http: //msdn.microsoft.com/fr-fr/library/system.data.sqlclient.sqlcommandbuilder%28v=vs.80%29.aspx

于 2012-09-04T17:07:08.020 回答