Несколько DataKeyNames из сложного типа в GridView с ObjectDataSource - PullRequest
1 голос
/ 16 июня 2011

У меня есть источник данных List<Examination>, где каждая запись содержит два объекта.Я хочу связать свойство datakeynames с pkIds обоих объектов, например

<asp:GridView DataKeyNames="obj1.pkId, obj2.pkId" ... />

Я связываю сетку программно.но я получаю сообщение об ошибке, указывающее:

DataBinding: 'objectList' не содержит свойства с именем 'obj1.pkId'

Обход будет приветствоваться.

Редактировать

class Examination
{
 public string name{get;set;}
 public TestClass test{get;set;}
 public Subject subject{get;set;}
}

class TestClass 
{
public int testId{get;set;}
}

class Subject
{
public int subjectId{get;set;}
}

Ожидаемые имена ключей: "test.testId, subject.subjectId" , что делает экзамен объектами класса уникальными.

Мой ObjectDataSource будет привязан к List<Examination>

1 Ответ

1 голос
/ 21 ноября 2012

У меня была такая же проблема. Использование значения индекса, как описано выше в комментариях deostroll, не сработало.

Я нашел решение моей проблемы здесь вместо .

Я решил реализовать свойство на уровне корневого объекта для представления идентификатора дочернего объекта.

Чтобы соответствовать примеру выше, код будет выглядеть так:

    class Examination
    {
        public string name{get;set;}
        public TestClass test{get;set;}
        public Subject subject{get;set;}
        public int TestID { get { return test.testId; } }
        public int SubjectID { get { return subject.subjectId; } }
    }

    class TestClass 
    {
       public int testId{get;set;}
    }

    class Subject
    {
       public int subjectId{get;set;}
    }

Затем, чтобы установить datakeys для моего вида сетки в разметке сетки, DataKeyNames = "name, TestID, SubjectID" .

...