- PR -

データグリッドについて

1
投稿者投稿内容
しげっち
会議室デビュー日: 2003/04/20
投稿数: 4
投稿日時: 2003-06-12 10:19
いつもお世話になってます。

<Columns>
<asp:TemplateColumn HeaderText="日付">
<ItemTemplate>
<asp:Label id="Label1" runat="server">
<%# DataBinder.Eval(Container.DataItem,"日付") %>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>

サーバー側で
DataGrid1.Columns[0].HeaderText でHeaderTextの値は取得できましたが、
ItemTemplateの値を取得したいのですができません!
どのようにしたら良いのでしょうか?
C#で開発してます。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-06-12 11:12
ラベルなどのコントロールを取得したいならば、ItemDataBoundイベントでFindControlすればいいと思います。


コード:
ASPX
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
  <Columns>
    <asp:TemplateColumn HeaderText="日付">
      <ItemTemplate>
        <asp:Label id="Label1" runat="server">
          <%# DataBinder.Eval(Container.DataItem,"Day") %>
        </asp:Label>
      </ItemTemplate>
    </asp:TemplateColumn>
  </Columns>
</asp:DataGrid>
ソース
    Class Data
        Public ReadOnly Property Day() As String
            Get
                Return "1/1"
            End Get
        End Property
    End Class
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim a As ArrayList = New ArrayList
        a.Add(New Data)
        a.Add(New Data)
        DataGrid1.DataSource = a
        DataBind()
    End Sub

    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
        Dim c As Control = e.Item.FindControl("Label1")
        If c Is Nothing Then Return
        Dim l As Label = c
        l.BackColor = Color.Red
    End Sub

cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-06-12 11:19
C#ならば、DataGrid1_ItemDataBoundでこんな感じ
コード:
Label l = e.Item.FindControl("Label1") as Label;
if (l != null) l.BackColor = Color.Red;

1

スキルアップ/キャリアアップ(JOB@IT)