SharePoint 2010 BaseFieldControl Дублирует первый элемент в списке в режиме DisplayMode - PullRequest
0 голосов
/ 18 ноября 2011

Я столкнулся с проблемой при использовании BaseFieldControl, который отвлекает меня.

По сути, я пытаюсь преобразовать список в таблицу HTML, используя BaseFieldControl для визуализации полей.

Когда рендеринг моей таблицы выводит правильное количество строк, НО данные в каждой строке всегда совпадают с первым элементом в списке.

Когда я изменяю свойство ControlMode с SPControlMode.Display на SPControlMode.Редактировать список правильно (кроме режима редактирования)

Когда мой код, работающий с ControlMode установлен в SPControlMode.Display, я могу получить правильное значение в свойстве BaseFieldControl.ItemFieldValue, но все еще убогий BaseFieldControlнастаивает на отображении первого элемента в списке!

Я также установил веб-часть на фундамент SharePoint и сервер SharePoint 2010 и получаю те же результаты!

Наконец, я погуглилвокруг и нашел примеры других людей.К сожалению, когда я пробую код другого разработчика (без изменений), я получаю точно такие же результаты!

Это то, что я делаю.Будем очень благодарны за любые предложения!

foreach (строка f в list.DefaultView.ViewFields) {

            TableCell c = new TableCell();
            var i = item[f];
            if (i != null)
            {
                SPField spf = item.Fields.GetField(f);
                BaseFieldControl bfc = spf.FieldRenderingControl; 
                bfc.ControlMode = SPControlMode.Display;

                bfc.Value = bfc.ItemFieldValue;

                bfc.ID = Guid.NewGuid().ToString();
                bfc.FieldName = spf.Title;
                bfc.ListId = list.ID;
                bfc.ItemId = item.ID;
                SPContext context = SPContext.GetContext(this.Context, item.ID, list.ID, SPContext.Current.Web);

                bfc.ItemContext = context;
                bfc.RenderContext = context;
                bfc.EnableViewState = true;
                bfc.Visible = true;


                c.Controls.Add(bfc);

            }
            else
            {
                c.Text = "NULL";
            }
            r.Cells.Add(c);

        }

1 Ответ

0 голосов
/ 22 ноября 2011

Я наконец исправил это. Оказывается, проблема с объектом SPWeb. Я взял его из SPContext и передал в качестве ссылки на мой метод.

Когда я прекратил это делать, но вместо этого создал его в методе (и создал его один раз для каждого элемента в списке), все работало нормально.

Очень странно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...