4

好的,所以我有这个:

Dim sql As String = "SELECT * FROM Articles"
dAdapter = New OleDbDataAdapter(sql, connection)
dSet = New DataSet("tempDatatable")

With connection
    .Open()
    dAdapter.Fill(dSet, "Articles_table")
    .Close()
End With

With DataGridView1
    .DataSource = dSet
    .DataMember = "Articles_table"
End With

我想知道是否有任何可能的方法将第一列定义为主键。我环顾四周,但每个人都在使用手动数据表来填充数据网格。由于我使用的是数据库,我不知道如何从那里设置主键。我需要一些帮助。

4

3 回答 3

8

您必须将DataAdapter's设置MissingSchemaActionAddWithKey

var table = new DataTable();
using(var con = new SqlConnection(connectionString))
using (var da = new SqlDataAdapter("SELECT * FROM Articles", con))
{
    da.MissingSchemaAction = MissingSchemaAction.AddWithKey
    da.Fill(table);
}

编辑:VB.NET:

Dim table = New DataTable()
Using con = New SqlConnection(connectionString)
    Using da = New SqlDataAdapter("SELECT * FROM Articles", con)
        da.MissingSchemaAction = MissingSchemaAction.AddWithKey
        da.Fill(table)
    End Using
End Using

现在,完成架构所需的列和主键信息会自动添加到DataTable.

阅读:从 DataAdapter 填充 DataSet

于 2013-09-26T16:02:37.103 回答
7

您可以使用以下方式向数据表添加主键:

var table = dSet.Tables["Articles_table"];
table.PrimaryKey = new DataColumn[] { table.Columns[0] };

抱歉,刚刚意识到这个问题是用 vb.net 标记的,而不是 c#。VB.net 将是:

Dim table = dSet.Tables("Articles_table")
table.PrimaryKey = New DataColumn() {table.Columns(0)}
于 2013-09-26T15:53:56.013 回答
0

请这样做。

Dim objTmpTable As New DataTable
   objTmpTable.PrimaryKey = New DataColumn() {objTmpTable.Columns(0)}
   dgrdMeasure.DataSource = objTmpTable
   dgrdMeasure.DataBind()

也就是说,在分配给Grid之前,只需设置Primary key。

于 2016-08-30T14:26:20.270 回答