コメント
コメントの投稿
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="RepeaterTest.aspx.vb" Inherits="AspNetTest.RepeaterTest" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>RepeaterTest</title>
<link rel="stylesheet" type="text/css" href="~/Styles/Style.css" media="all" />
<script src="Scripts/jquery-1.10.2.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<%-- リピーター --%>
<asp:Repeater ID="rptLargeCategory" runat="server">
<ItemTemplate>
<ul>
<li>
Id:
<asp:Label ID="lblIndex" runat="server" Text='<%# Container.ItemIndex.ToString() %>' />
Code:
<asp:Label ID="lblCode" runat="server" Text='<%# Eval("LargeCode") %>' />
Name:
<asp:Label ID="lblName" runat="server" Text='<%# Eval("LargeName") %>' />
<br>
ItemDataBound:
<asp:Label ID="lblValue1" runat="server" /> <%-- ItemDataBindイベントで設定 --%>
<br>
Button_Click:
<asp:Label ID="lblValue2" runat="server" /> <%-- Buttonクリックイベントで設定 --%>
</li>
</ul>
</ItemTemplate>
</asp:Repeater>
<asp:Button ID="btnConfirm" runat="server" Text="OK" />
</div>
</form>
</body>
</html>
Option Explicit On
Option Strict On
Public Class RepeaterTest
Inherits System.Web.UI.Page
''' <summary>
''' ViewStateにデータセットを保持します。
''' </summary>
''' <returns></returns>
Private Property DataSource As DataSet
Get
Return DirectCast(ViewState("DataSource"), DataSet)
End Get
Set(value As DataSet)
ViewState("DataSource") = value
End Set
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim dbUtil As New DbUtility()
Dim ds1 As DataSet = Nothing
Dim ds2 As DataSet = Nothing
Dim ds3 As DataSet = Nothing
Dim sql1 As New StringBuilder
Dim sql2 As New StringBuilder
Dim sql3 As New StringBuilder
'大カテゴリ取得
sql1.AppendLine(" SELECT LargeCode ")
sql1.AppendLine(" ,LargeName ")
sql1.AppendLine(" FROM T_Category_L ")
sql1.AppendLine(" WHERE LargeCode <= 5")
sql1.AppendLine(" ; ")
dbUtil.Connect()
dbUtil.ClearParams()
'データを取得する
ds1 = dbUtil.ExecuteFill(sql1.ToString, "CategoryLarge")
Me.DataSource = ds1
'データバインド
Me.rptLargeCategory.DataSource = ds1
Me.rptLargeCategory.DataBind()
End If
End Sub
''' <summary>
''' リピータのデータバインド時イベント
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub rptLargeCategory_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles rptLargeCategory.ItemDataBound
If e.Item.ItemType = ListItemType.Item OrElse
e.Item.ItemType = ListItemType.AlternatingItem Then
'バインドされた行のラベルを取得します。
Dim lblValue1 As Label = DirectCast(e.Item.FindControl("lblValue1"), Label)
'ラベルにバインドデータを表示します。
lblValue1.Text = DataBinder.Eval(e.Item.DataItem, "LargeCode").ToString()
End If
End Sub
''' <summary>
''' ボタンクリックイベント
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub btnConfirm_Click(sender As Object, e As EventArgs) Handles btnConfirm.Click
'Repeaterの全明細をRepeaterItemとして取得します。
Dim items As RepeaterItemCollection = DirectCast(Me.rptLargeCategory.Items, RepeaterItemCollection)
'明細をループし、RepeaterItemからラベルコントロールを取得します。
For Each item As RepeaterItem In items
Dim index As Integer = item.ItemIndex
Dim lblValue2 As Label = DirectCast(item.FindControl("lblValue2"), Label)
'ラベルにデータセットの同じIndexのデータを表示します。
lblValue2.Text = DirectCast(Me.DataSource, DataSet).Tables(0).Rows(index).Item("LargeCode").ToString()
Next
End Sub
End Class
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。