2016-11-25 63 views
2

如何根據TextBox值在DevExpressGridView上選擇全行?根據TextBox值在DevExpress GridView上選擇完整行

我嘗試下面的代碼,但它不工作:

Dim rowHandle As Integer = GridView1.LocateByDisplayText(0, colC_Id, txtSelect.Text) 
If rowHandle <> DevExpress.XtraGrid.GridControl.InvalidRowHandle Then 
    Dim row As System.Data.DataRow = GridView1.GetDataRow(GridView1.FocusedRowHandle) 
    row(0) = txtSelect.EditValue 
End If 
+0

能否請您通過將每個命令在一個單獨的代碼格式線和4個空格縮進。你能更清楚你想要達到的目標以及問題所在。我的理解是,你有一個DevExpress GridControl,你希望選擇與輸入到同一表單上的文本框中的文本相匹配的第一行。它是否正確?如果是這樣,是拋出一個異常,或者當你期望它是一個沒有被選中的行? –

+0

是的,但該行不會被選中。該文本框在同一個用戶控件上。 – Jassimi

回答

2

代碼不選擇在GridControl一行。它會對在GridColumn colC_Id中的文本框中輸入的文本進行區分大小寫的搜索,如果找到匹配項,GridControl數據源的第二列(列索引1)中的文本將更新爲輸入的文本當前選中的行。如果數據源中的該字段已添加到GridControl的GridColumn集合中,則更新的值將反映在GridControl中。

下面是如何在基於一定值的GridControl選擇行的一個示例,其中GridControl的數據源是一個DataTable:

Dim myDataTable As DataTable = DirectCast(GridControl1.DataSource, DataTable) 
Dim sFieldName As String = colC_Id.FieldName 
Dim sColumnName As String = colC_Id.Name 
Dim myDataRows As DataRow() = myDataTable.Select(sFieldName & "='" & TextBox1.Text.Replace("'", "''") & "'") 

If myDataRows.Length > 0 Then 
    Dim iDataSourceRowIndex As Int32 = myDataTable.IndexOf(myDataRows(0)) 
    GridView1.FocusedRowHandle = GridView1.GetRowHandle(iDataSourceRowIndex) 
Else 
    MessageBox.Show("The text '" & TextBox1.Text & "' was not found in column '" & sColumnName &"'") 
End If