C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 129 を表示中)
■76442 / )  ListViewにバインドされたデータの取得
□投稿者/ aloha (1回)-(2015/07/12(Sun) 08:45:28)

分類:[ASP.NET (C#)] 

Page_Load時に、ListView.DataSourceにDataTableをバインドしていますが、他イベント発生時にListView.DataSourceを参照するとnullが取得されてバインドデータまで辿り着けません。
ListView.DataSourceを再取得する方法はございませんか?


※実装したい内容は選択行の背景色を変えるためにListViewにselecteditemtemplateを設定していますが、
 行選択時に再度バインドが必須であり、その際に自分自身のDataSourceを取得したいです。
 バインド時にセッションにつめたデータを再利用する他サイトで見つけたのですが、
 コントロール数が多く実装を減らしたいこともありセッションやViewStateで保持をしないで実装できる方法を考えています。

何卒宜しくお願いします。

■aspx
<asp:ListView id="testLv" runat="server" OnSelectedIndexChanging="SelectedIndexChanging">
<LayoutTemplate>
<div ID="itemPlaceholderContainer" runat="server">
<span ID="itemPlaceholder" runat="server" />
</div>
</LayoutTemplate>
<ItemTemplate>
<span id="td1" runat="server">
<asp:LinkButton runat="server" ID="Select" CommandName="Select"><%# Eval("td1") %></asp:LinkButton>
</span>
</ItemTemplate>
<SelectedItemTemplate>
<span id="td1" runat="server" style="background-color:Blue; color:White;">
<asp:LinkButton runat="server" ID="Select" CommandName="Select"><%# Eval("td1") %></asp:LinkButton>
</span>
</ItemTemplate
</SelectedItemTemplate>
</asp:ListView>

■.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace WebApplication4
{
public partial class DetailsViewPagingSample : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == false)
{
DataTable dt = new DataTable();
dt.Columns.Add("td1");
DataRow drNew = dt.NewRow();
drNew["td1"] = "Item01";
dt.Rows.Add(drNew);

this.testLv.DataSource = dt;
this.testLv.DataBind();
//セッションに保持
Session["lvData"] = dt;
}
}

protected void SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
{
this.testLv.SelectedIndex = e.NewSelectedIndex;
//保持したセッションを使用
this.testLv.DataSource = Session["lvData"]; //←セッションなどで保持したくない
this.testLv.DataBind();
}
}
}
返信 編集キー/


管理者用

- Child Tree -