Проблема здесь заключается в том, как механизм связывания данных работает с таблицей данных и обрабатывает имена столбцов / свойств. Eval
использует отражение, а символы в скобках в именах столбцов приводят к сбою (мне нужно потрясти память о том, как все это работает снова, это было давно).
Просто приведите базовый Container.DataItem
к его типу (a DataRowView
), затем выберите столбец:
<%# ((System.Data.DataRowView)Container.DataItem)["cs(Referer)"]%>
Это также быстрее, потому что отражение не используется, что медленно.
Также я заметил, что вы написали «Реферер» неправильно (у вас есть два «р»), так что следите за этим.
Чтобы заставить это работать, используя Eval()
, вам нужно сделать немного больше работы. Изменить это:
for(int j=0;j<arColm.Length;j++)
{
dt.Columns.Add(arColm[j]);
Debug.WriteLine(arColm[j]);
}
К этому:
for (int j = 0; j < arColm.Length; j++)
{
string colName = arColm[j].Replace("(", "_").Replace(")", "");
dt.Columns.Add(colName);
Debug.WriteLine(colName);
}
В подшивке данных Eval
выражение изменить любой столбец с круглыми скобками в имени с:
Eval("cs(Referer)")
до:
Eval("cs_Referer")
Но я бы выбрал первый метод, он менее навязчив и намного быстрее.