2014-09-01 13 views
0

Я использую devexpress Gridcontrol/Gridview, который имеет 4 колонкиGet RepositoryItem (As Control) от DevExpress-GridviewCell

Name: String 
Description: String 
Action: RepositoryItemLookUpEdit 
Info: RepositoryItemHyperLinkEdit 

Прямо сейчас я хочу, чтобы написать функцию, которая updates в Action-column, но только тогда, когда Value содержится в datasource из RepositoryItemLookUpEdit

Так я начал писать код, и это, как я далеко я получил:

For i As Integer = 0 To GridViewDD.RowCount - 1 
    Dim j As Integer = i 
    Dim rItemlookup As RepositoryItemLookUpEdit = CType(GridViewDD.GetRow(i), DataRowView).Item("Actions") 
    If CType(rItemlookup.DataSource, List(Of String)).Contains(curraction) Then 
     // Do update of the datasource here (which works) 
    End If 
Next 

GridControlDD.RefreshDataSource() 

Моя проблема заключается в строке:

Dim rItemlookup As RepositoryItemLookUpEdit = CType(GridViewDD.GetRow(i), DataRowView).Item("Actions") 

Вопрос: Как я могу получить RepositoryItemLookUpEdit клетки в DevExpress (или его источник данных)?

Примечание: Источник данных моего GridView (GridViewDD) является List И мой источник данных о RepositoryItemLookUpEdit в Action всегда List(Of String)

Примечание 2: contents моего datasource may vary от строки к строка

ответ

1

Вы можете легко получить RepositoryItem от GridColumn.ColumnEdit.
Вот пример:

Dim rItemlookup As RepositoryItemLookUpEdit = GridViewDD.Columns("Action").ColumnEdit 

'... 

For i As Integer = 0 To GridViewDD.RowCount - 1 
    Dim j As Integer = i 

    If CType(rItemlookup.DataSource, List(Of String)).Contains(curraction) Then 
     '... Do update of the datasource here (which works) 
    End If 
Next 

GridControlDD.RefreshDataSource() 
+0

Waaah! Даже лучше, чем мое собственное решение! Спасибо за это! – User999999

0

Я нашел его. благодаря «часам» просмотра форумов devexpress. Использование Gridviewinfo и GridDataRowInfo вы можете легко получить доступ к управлению «скрытому» внутри сетки

В моем случае код выглядит следующим образом

Dim gvInfo As GridViewInfo = GridViewDD.GetViewInfo() 
Dim rInfo As GridDataRowInfo = gvInfo.RowsInfo.FindRow(i) 
Dim rItemlookup As RepositoryItemLookUpEdit = rInfo.Cells(GridViewDragDrop.Columns.Item("Actions")).Editor 

теперь вы можете использовать rItemlookup изменить или доступ к его свойствам.

Я надеюсь, что это может пригодиться кому угодно.