- PR -

Gridview のヘッダに DropDownList を設置したい

1
投稿者投稿内容
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2007-03-09 14:34
■ASP.NET2.0(VB.NET)

■現在の状態

ヘッダ付きの GridView にテンプレート列(ItemTemplate)を動的に追加して、一覧画面を作成しています。
ItemTemplate には、テキストボックスを配置しています。

■やりたいこと

ヘッダに DropDownList を配置したい。
もしくはテンプレート列に、テキストボックスと DropDownList を混在させたい。

イメージとしては、ヘッダに DropDownList を配置し、そこで何の数値をテキストボックスに入力するかを選択させたい。


GridView のヘッダに DropDownList を配置することは、可能なのでしょうか?
もしくは、ItemTemplate に DropDownList と TextBox を混在させることは可能なのでしょうか?

技術的に可能/不可能だけでも良いので、知りたいと思います。
よろしくお願い致します。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2007-03-09 23:58
こんなかんじですかね?

コード:

<%@ Page Language="VB" %>
<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim al As New ArrayList()
        al.Add("DS1")
        al.Add("DS2")
        al.Add("DS3")
        Me.GridView1.DataSource = al
        Me.GridView1.DataBind()
    End Sub
</script>
<html>
<head>
  <title>test</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
      <Columns>
        <asp:TemplateField>
          <HeaderTemplate>
            Header
            <asp:DropDownList ID="ddlHeader" runat="server">
              <asp:ListItem>H1</asp:ListItem>
              <asp:ListItem>H2</asp:ListItem>
              <asp:ListItem>H3</asp:ListItem>
            </asp:DropDownList>
          </HeaderTemplate>
          <ItemTemplate>
            <asp:TextBox ID="txtItem" Text="<%# Container.DataItem %>" runat="server"></asp:TextBox>
            <asp:DropDownList ID="ddlItem" runat="server">
              <asp:ListItem>I1</asp:ListItem>
              <asp:ListItem>I2</asp:ListItem>
              <asp:ListItem>I3</asp:ListItem>
            </asp:DropDownList>
          </ItemTemplate>
        </asp:TemplateField>
      </Columns>
    </asp:GridView>
  </form>
</body>
</html>


テンプレート列を動的に追加ってことは、ちょっと違うのかな?
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2007-03-13 14:44
ぼのぼのさん、こんにちは。
お返事が遅れ、申し訳ございません。

ヘッダの動的設定は、

  GridViewの自前ヘッダをつけるとRowのindexが狂う

を見て出来ることは分かったのですが、そのタイミングでヘッダに DropDownList を設置することも出来るのかな、と思っています。

GridView の RowDataBound イベント時に DropDownList を Add すると見た目上は出来るのですが、このタイミングで Bind とか出来るのだろうか(このタイミングでいいのかも含め)、などもうちょっと試行錯誤してみます。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2007-03-13 15:04
出来ました。

こんな感じで。
コード:
        If e.Row.RowType = DataControlRowType.Header Then
            Dim ddl1 As New DropDownList

            ddl1.DataTextField = "NAME"
            ddl1.DataSource = CType(Session("DATA1"), DataSet)
            e.Row.Cells(1).Controls.Add(ddl1)
            ddl1.DataBind()



ぼのぼのさん、ありがとうございました。
1

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