Я столкнулся с проблемой при использовании 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);
}