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

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

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

Re[1]: ListViewにバインドされたデータの取得


(過去ログ 129 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■76442 / inTopicNo.1)  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();
}
}
}
引用返信 編集キー/
■76446 / inTopicNo.2)  Re[1]: ListViewにバインドされたデータの取得
□投稿者/ WebSurfer (615回)-(2015/07/12(Sun) 12:37:18)
No76442 (aloha さん) に返信

ASP.NET 開発の質問をするなら、まず最初に、ご自分の環境(OS, .NET,
IIS, Visual Studio のバージョン、DB サーバーとそのバージョン、ブ
ラウザを使っているなら何かなど)に関する情報を書いていただけませ
んか?

特に初心者の方は、質問と関係ないと思って書かない人が多いですが、
意外なところで関係します。

今回の場合は DB に何を使っているかでどういう手段を提案できるかが
違ってきます。

SQL Server であれば、以下のページを見て Cache + SQL キャッシュ依
存関係が使えるかどうか検討してみてください。

SQL キャッシュ依存関係
http://surferonwww.info/BlogEngine/post/2011/03/28/SQL-Cache-Dependency.aspx

Cache だけ使うということであれば、DB に関係なく可能なはずですので、
SQL Server でないということでしたら Cache だけ使うことも検討してみ
てください。

Cache も使うのがイヤだということであれば、毎回データソースから取得
して DataTable を作ってバインドするほか現実的な手段はなさそうです。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -