2017-04-21 4 views
0

データグリッドにセルの値に基づいて列のヘッダーテキストを変更したいと思います。どのようにセルのヘッダーを取得し、テキストを変更するには?C#ASP.NETアイテムの値に基づいてDataGridヘッダーテキストを変更する方法

助けてください。前もって感謝します!以下

のDataGridのhtml:

<asp:DataList ID="dlWarrant" runat="server" Width="100%" OnItemDataBound="dlWarrant_OnItemDataBound"> 
    <ItemTemplate> 
     <asp:Table runat="server" ID="resulttable" Width="100%" > 
     <asp:TableRow> 
      <asp:TableCell ColumnSpan="6" HorizontalAlign="left"> 
      <asp:DataGrid CellSpacing="1" runat="server" ID="dgWarrant1" CellPadding="4" ForeColor="#333333" 
       GridLines="Both" AutoGenerateColumns="False" HorizontalAlign="Center" Width="100%" 
       DataSource='<%# Eval("DETAILS1") %>' Font-Size="8.5pt" OnItemDataBound="dgWarrant1_OnItemDataBound"> 
      <EditItemStyle BackColor="#999999" /> 
      <SelectedItemStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
      <PagerStyle HorizontalAlign="Center" Mode="NumericPages" CssClass="PagerStyle" BackColor="#284775" ForeColor="White" /> 
      <Columns> 
       <asp:BoundColumn DataField="PA_NO" HeaderText="WARRANT NO." HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center" ItemStyle-Width="20%" /> 
       <asp:BoundColumn DataField="TOTAL_UNITS_HELD" HeaderText="NO. OF UNITS HELD" HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center" DataFormatString="{0:#,##0.00}" ItemStyle-Width="20%" /> 
       <asp:BoundColumn DataField="YR_ENDED" HeaderText="YEAR ENDING" HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center" ItemStyle-Width="20%" /> 
       <asp:BoundColumn DataField="TYPE_OF_DISTRIBUT" HeaderText="TYPE OF DISTRIBUTION" HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center" ItemStyle-Width="20%" /> 
       <asp:BoundColumn DataField="TRANS_DATE" HeaderText="REINVESTMENT DATE" HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center" ItemStyle-Width="20%" /> 
       <asp:BoundColumn DataField="INCOME_TREATMENT" HeaderText="INCOME_TREATMENT" ItemStyle-CssClass="hideGridColumn" HeaderStyle-CssClass="hideGridColumn" /> 
      </Columns> 
      </asp:DataGrid> 
     </asp:TableCell> 
     </asp:TableRow> 
    </asp:Table> 
    </ItemTemplate> 
</asp:DataList> 

私のコードビハインド:

protected void dgWarrant1_OnItemDataBound(object sender, DataGridItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      // if INCOME_TREATMENT <> R 
      if (e.Item.Cells[5].Text != "R") 
      { 
       //change the header of Cells[4] to DISTRIBUTION DATE 
      } 
      else 
      { 
       //change the header of Cells[4] to REINVESTMENT DATE 
      } 
     } 
    } 

答えて

0

EDIT:その項目拘束を受けるDataGridDataList制御にあるので、あなたが最初にあなたのグリッドコントロールへの参照を取得する必要があります。あなたは次のようにすることができます:

//get grid as Item's parent 
DataGrid grid = e.Item.Parent.NamingContainer as DataGrid 
//alternatively, you can search for grid in DataList controls, like this: 
// yourList.FindControl("dgWarrant1") as DataGrid; 

// if INCOME_TREATMENT <> R 
if (e.Item.Cells[5].Text != "R") 
{ 
    grid.Columns[4].HeaderText = "DISTRIBUTION DATE"; 
} 
else 
{ 
    grid.Columns[4].HeaderText = "REINVESTMENT DATE"; 
} 
+0

こんにちは。お返事をありがとうございます。しかし、dgWarrant1はDataList内にあるため、コードビハインドからはアクセスできません。上記のhtmlを更新します。あなたはdgWarrant1にアクセスする方法を知っていますか? – Intan

+0

@Eera、私は自分のコードを編集しました。それがあなたを助けるかどうか今見てみてください。 – Nino

+0

こんにちは@Nino。返事が遅れて申し訳ありません。ご協力のおかげで、私は今グリッドにアクセスできます。しかし、列ヘッダーのタイトルは変更されませんでした。助けてください。 – Intan

関連する問題