2014-03-04 18 views
2

我在DataGridViewLinkColumn中遇到问题。点击时特定columnIndex,我想更改链接列文本。 (请参见下面的示例) enter image description here如何更改datagridview LinkColumn点击时的文本

在上面的例子,我想改变文本(高亮显示的一个)被点击SAVE
注:必须做到只在特定的行和列的索引

我用datagridViewColumn,这里的变化是我的代码:(链接列显示绑定的数据表,然后显示到数据网格。)

 Dim da As New SqlDataAdapter("SELECT DateReq AS [Date Requested],NoHrs AS [# OT Hrs.],status,approved_by FROM tableName" _ 
      & "WHERE requested_by='" & lbluserid.Text & "'" _ 
      & " ORDER BY date_request ASC", Constr) 
     Dim dt As New DataTable 

     ds.Clear() 
     da.Fill(dt) 


     dg.DataSource = dt 

     dg.Columns.Add(lnkEdit) 
     lnkEdit.HeaderText = "" 
     lnkEdit.Name = "edit" 
     lnkEdit.Text = "Edit" 
     lnkEdit.UseColumnTextForLinkValue = True 
     dg.Columns(4).Width = 45 
     dg.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter 

     dg.Columns.Add(lnkCancel) 
     lnkCancel.HeaderText = "" 
     lnkCancel.Name = "cancel" 
     lnkCancel.Text = "Cancel" 
     lnkCancel.UseColumnTextForLinkValue = True 
     dg.Columns(5).Width = 45 
     dg.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter 

回答

2

只是处理CellContentClick事件,得到正确的电池,并设置它的值:

' If your DataGridView is named dataGridView1: ' 
Private Sub dataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dataGridView1.CellContentClick 
    dataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = "Saved" 
End Sub 

请注意,您的问题是,一个DataGridViewLinkCell或者显示它的Value(当时为UseColumnTextForLinkValue == false),或者它显示Text它的DataGridViewLinkColumn(当时UseColumnTextForLinkValue == true)。

因此,如果您想要在运行时更改链接的文本,您必须设置UseColumnTextForLinkValue = false,并预先用文本Edit填充单元格,例如,像这样:

For Each row in dg.Rows 
    row(your_link_column).Value = "Edit" 
Next 
+0

谢谢你的回应,但它不工作。我会更新我的上述帖子。请参阅更新后的帖子。 – Unknownymous

+0

与你的先生一样..你上面的示例代码.. – Unknownymous

+0

我只有一个这种形式的数据网格,我没有双击CellContentClick ...但仍然无法正常工作。 – Unknownymous