Когда это начинает усложняться, я всегда рекомендую изменить структуру, чтобы использовать серверный элемент управления и выполнить привязку через событие OnDataBinding
для этого элемента управления.
Пример:
<asp:TemplateField HeaderText="DomainID">
<ItemTemplate>
<asp:Literal ID="ltDomainID" runat="server"
OnDataBinding="ltDomainID_DataBinding" />
</ItemTemplate>
Затем в вашей кодовой привязке реализуйте OnDataBinding
:
protected void ltDomainID_DataBinding(object sender, System.EventArgs e)
{
Literal lt = (Literal)(sender);
for (int i = 0; i < 10; i++)
{
var x = (int)(Eval("DomainID"));
if (x > 0)
{
lt.Text += x.ToString();
}
++i;
}
}
Я мог бы немного испортить вашу логику, но это должно дать вам основную идею. Внедрение логической серверной части делает вас более чистым в aspx и связывает логику непосредственно с выходным управлением (в данном случае это Literal
).