2014-01-10 14 views
0

我有一個3個TemplateColumns的數據網格,每個包含一個HeaderTemplate和一個ItemTemplate。我爲所有3列添加了HeaderStyle,ItemStyle和AlternatingItemStyle(因此在標籤之外)。如何將AlternatingItemStyle應用於特定的DataGrid TemplateColumn?

然後我決定要將不同的ItemStyle專門應用於第3列,這是通過在特定的TemplateColumn中添加ItemStyle 。這工作得很好,除了我仍然想要的AlternatingItemStyle不再適用。我想我可以在特定的TemplateColumn中添加另一個AlternatingItemStyle,但是這不被支持。我試着在代碼中添加它以及通過OnDataBinding命令,但AlternatingItemStyle不出現在Column屬性下面。代碼如下:

<asp:DataGrid ID="dgErrors" 
CssClass="cssErrors" 
Caption="Errors" 
AutoGenerateColumns="false" 
CellPadding="3" 
runat="server"> 
    <Columns> 
     <asp:TemplateColumn> 
      <HeaderTemplate>Job Number</HeaderTemplate> 
      <ItemTemplate><%# Eval("Job Number") %></ItemTemplate> 
     </asp:TemplateColumn> 
     <asp:TemplateColumn> 
      <HeaderTemplate>Error</HeaderTemplate> 
      <ItemTemplate><%# Eval("Error") %></ItemTemplate> 
     </asp:TemplateColumn> 
     <asp:TemplateColumn> 
      <HeaderTemplate>Row Number</HeaderTemplate> 
      <ItemTemplate><%# Eval("Line Number") %></ItemTemplate> 
     <ItemStyle CssClass="TableItemStyleRowNo" /> 
     </asp:TemplateColumn> 
    </Columns> 

    <HeaderStyle CssClass="TableHeaderStyle" /> 
    <ItemStyle CssClass="TableItemStyle" /> 
    <AlternatingItemStyle CssClass="TableAlternatingItemStyle" /> 
</asp:DataGrid> 

我的問題是:首先,如何將AlternatingItemSyle應用於特定的TemplateColumn?其次,爲什麼在TemplateColumn中支持ItemStyle,但AlternatingItemStyle不是?

回答

1

DataGrid的財產

<ItemStyle CssClass="TableItemStyle" /> 
    <AlternatingItemStyle CssClass="TableAlternatingItemStyle" /> 

適用於Datagrid的不是單獨的列全排。

實現你的要求做如下改變:

在你的aspx頁面添加OnItemDataBound屬性如下:

<asp:DataGrid ID="dgErrors" 
CssClass="cssErrors" 
Caption="Errors" 
AutoGenerateColumns="false" 
CellPadding="3" 
runat="server" 
OnItemDataBound = "dgErrors_ItemBound"> 

添加該代碼在你的.cs頁:

protected void dgErrors_ItemBound(Object sender, DataGridItemEventArgs e) 
    { 
      if (e.Item.ItemType == ListItemType.Item) 
      { 
       e.Item.Cells[0].CssClass = "TableItemStyleRowNo"; 
      } 
      else if(e.Item.ItemType == ListItemType.AlternatingItem) 
      { 
       e.Item.Cells[0].CssClass = "AlternateTableItemStyleRowNo"; 
      } 
    } 
+0

這是問題的一部分。我最初只想將一個ItemStyle和AlternatingItemStyle應用於整個數據網格。但是,我現在想讓所有列都具有除1之外的那些樣式,我只想改變ItemStyle而不是AlternatingItemStyle。因此,在TemplateColumn中添加ItemStyle即可,但現在AlternatingItemSytle不適用。 – sr28

+0

對不起,奇怪的是你的答案只有一部分出現了。我會嘗試你的代碼,並讓你知道我如何繼續。 – sr28

+0

這工作(雖然它是細胞[2])。謝謝!似乎很奇怪,你不能在列中應用AlternatingItemStyles,但你可以使用ItemStyle。 – sr28

相關問題