Я делаю это, применяя стиль к событию DataBinding
одного из моих элементов управления в шаблоне. Пример:
<asp:GridView ID="grdYourGrid" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="SomeTitle">
<ItemTemplate>
<asp:HyperLink ID="hrefYourLink" runat="server"
NavigateUrl="Somepage.aspx?id={0}"
OnDataBinding="hrefYourLink_DataBinding"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Затем осуществить OnDataBinding
событие:
protected void hrefYourLink_DataBinding(object sender, System.EventArgs e)
{
HyperLink link = (HyperLink)(sender);
GridViewRow row = (GridViewRow)(link.Parent.Parent);
if ((bool)(Eval("IsObsolete"))
{
row.CssClass = "StrikeThroughStyle";
}
link.Text = HttpUtility.HtmlEncode(((int)(Eval("ID"))).ToString());
link.NavigateUrl = string.Format(link.NavigateUrl, Eval("ID").ToString());
}
Это просто быстрый пример с колонкой со ссылкой, которая модифицируется на основе привязки данных, а также, но вы должны быть в состоянии получить суть в том, чтобы настроить его в соответствии с вашими потребностями. Мне нравится делать это на привязке данных, потому что в моем коде aspx я не привязываю строку.
Являются ли ваши столбцы динамически привязаны к сетке? – Myra
@CAbbott: Было бы довольно сложно использовать 'ItemDataBound', тем более, что GridView не имеет этого метода. :) –
@Myra nope, из базы данных с использованием SqlDataSource. Если бы они были, это было бы легче. –