- ひろれい
- ぬし
- 会議室デビュー日: 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()
|
ぼのぼのさん、ありがとうございました。
|