【问题标题】:Copy selected row from datagrid at the end of datagrid从数据网格末尾的数据网格复制选定的行
【发布时间】:2013-06-13 08:32:35
【问题描述】:

我有一个数据网格,需要一个复制活动行并将其复制到新行的按钮。因为我对 vb.net 很陌生,所以我需要帮助。 我正在尝试使用以下代码:

Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles      ToolStripButton1.Click
    Dim conn As New SqlConnection("Data Source=xxx\SQLEXPRESS;Initial Catalog=DB;Integrated Security=TRUE")
    Dim insert_cmd As SqlCommand = New SqlCommand("dbo.Table_Insert", conn)
    insert_cmd.CommandType = CommandType.StoredProcedure

    With Table1_SelectDataGridView.CurrentRow
        insert_cmd.Parameters.AddWithValue("@Name", .Cells("Name").Value)
        insert_cmd.Parameters.AddWithValue("@Age", .Cells("Age").Value)
    End With
        conn.Close()

End Sub

结合存储过程

STORED PROCEDURE [dbo].[Table_Insert]
         @Name varchar(20)
         @FeierT_ID int
AS 
BEGIN 
 SET NOCOUNT ON 

 INSERT INTO dbo.table1
      ( 
        Name,
        Age    
      ) 
 VALUES 
      ( 
        @Name,
        @Age
        ) 
END 

当我尝试在 Visual Studio 中运行它时,我收到错误消息:“找不到列“名称”。”即使你的表列名称是“名称”和“年龄”顺便说一句。也找不到“年龄”。也许这根本就是错误的方法。谁能告诉我这里出了什么问题?

【问题讨论】:

    标签: sql-server vb.net visual-studio-2010 datagridview


    【解决方案1】:

    在 sqlcommand 中设置“dbo.Table_Insert”,存储过程名称为“dbo.Table1_Insert”。问题不在这里?...

    【讨论】:

    • 嗨,克里斯。不,这只是我在替换项目特定名称以获得更好的阅读时犯的一个错误。我现在在上面的代码中更改它。
    • 当您写“找不到列名”时,DataGridView 或执行存储过程时发生错误?如何填充 DatagridView 并创建列?
    • 我使用了调试器,当它尝试执行 "insert_cmd.Parameters.AddWithValue("@Name", .Cells("Name").Value)" 行时发生错误。我如何填充 DatagridView:我创建了一个新元素 - > 数据集并将数据适配器放入表单中。我在向导中分配了存储过程(选择、更新、插入和删除)。
    • 您是否尝试从列索引而不是其名称中获取单元格值?
    • 切换到索引给我以下错误消息:“索引超出范围。必须是非负数且小于集合的大小。参数名称:索引”
    【解决方案2】:

    对于 Datagridview 数据绑定,您必须向数据源(表)提交额外的记录

    所以,你必须这样做

    "INSERT INTO mytable ( fields here ... ) VALUES ( values here ..)"
    

    然后刷新你的datagridview ..

    dt2.datasource = mytable
    

    添加:

    对于您的代码...尝试像这样更改

    insert_cmd.Parameters.AddWithValue("@Name", .item("Name"))
    insert_cmd.Parameters.AddWithValue("@Age", .item("Age"))
    

    【讨论】:

    • 首先:谢谢!我试图实施你的建议。请你看看我的第一篇文章,我修改了它。
    • 不幸的是'CurrentRow'不知道'item'。
    猜你喜欢
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    相关资源
    最近更新 更多