Вложенная структура не обновляется

Если вы используете DataGrid, вы можете получить коллекцию записей в свойстве Items.

  foreach (DataGridItem item in dataGrid.Items)
  { 
     //...
     var data = item.Cells[0].Text;

     //or
     CheckBox chkBox = (CheckBox)item.FindControl("MyCheckBox");
     if (chkBox.Checked)
     {
         // do something
     }
  }

DataGridView имеет свойство Rows , а DataGrid имеет свойство Items для записи коллекция.

3
задан user3647323 20 January 2019 в 06:51
поделиться

4 ответа

Это не потому, что структура является вложенной, а потому, что вам нужен получатель-указатель для изменения значения, на которое указывает получатель, в данном случае ваша переменная a.

Без указателя ваш метод UpdateB будет обновлять только копию исходного значения структуры.

См. Следующее:

package main

import "fmt"

type B struct {
    c int
}

type A struct {
    b B
}

func (a *A) UpdateB(n int) {
    a.b.c = n
}

func main() {
    a := A{b: B{c: 5}}

    fmt.Println(a)
    a.UpdateB(50)
    fmt.Println(a)
}
0
ответ дан waymobetta 20 January 2019 в 06:51
поделиться

Проблема с вашей функцией обновления. Вы должны добавить его к указателю на A.

func (a *A) updateB(n int) {
    a.b.c = n
}
0
ответ дан Ibu 20 January 2019 в 06:51
поделиться

Чтобы любой интерфейс для его объектов обновлялся функцией, вам нужно передать объект по ссылке.

package main

import "fmt"

type B struct {
    c int
}

type A struct {
    b B
}

func (a *A) updateB(n int) {
    a.b.c = n
}

func main() {
    a := A{b: B{c: 5}}

    fmt.Println(a)
    a.updateB(42)
    fmt.Println(a)
}

https://play.golang.org/p/_o5sRApo6WP

0
ответ дан Prajval M 20 January 2019 в 06:51
поделиться

Это потому, что вы используете получатель значения, поэтому метод updateB получает копию значения A, а не указатель на память, которая содержит переменную a. Использование приемника указателя устраняет проблему:

package main

import "fmt"

type B struct {
    c int
}

type A struct {
    b B
}

func (a *A) updateB(n int) {
    a.b.c = n
}

func main() {
    a := A{b: B{c: 5}}

    fmt.Println(a)
    a.updateB(42)
    fmt.Println(a)
}

https://play.golang.org/p/XBrxd246qT3

См. Также:

[118 ] Приемник значения и приемник указателя на Голанге?

0
ответ дан Iain Duncan 20 January 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: