tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルASP.NETでDataGridのクリックした行の背景色を変更
記事No2422
投稿日: 2005/10/17(Mon) 11:43
投稿者やまもと
[OSのVer]:Windows    [VBのVer]:VB.NET

DataGrid上でクリックした行の背景色を変更したいのですが
実装方法がわかりません。
hhttp://www.atmarkit.co.jp/fdotnet/dotnettips/075onmousedg/onmousedg.html
上記URLの「マウスのある行」というのを「クリックした行」としたいのですが。。。
DataBindしないで行う方法はありますでしょうか?
(DataBind、というのは御幣があるかもしれませんが。。。)

hhttp://www.microsoft.com/japan/msdn/vs/webapplication/vbtchTopQuestionsAboutASPNETDataGridS
erverControl.asp
上記URLの「任意の場所をクリックして行を選択する」という方法はわかったのですが
私がやりたいと思うこととは少し違いまして。。。

クリックした行の背景色変更のみならば出来たのですが
次に別の行をクリックした場合に前回クリックした行を元の背景色に戻したいんです。
どなたかご存知でしたら、返答お願い致します。

[ツリー表示へ]
タイトルRe: ASP.NETでDataGridのクリックした行の背景色を変更
記事No2424
投稿日: 2005/10/17(Mon) 14:07
投稿者なおこ(・∀・)
お世話になります。

> クリックした行の背景色変更のみならば出来たのですが
> 次に別の行をクリックした場合に前回クリックした行を元の背景色に戻したいんです。

DHTMLが可能であれば、こんなのがあります。
hhttp://msdn.microsoft.com/library/en-us/dndude/html/tablehl.htc
↑の"マーカー"の所。

あとは、SelectedItemStyleを使った方法です。
hhttp://www.atmarkit.co.jp/fdotnet/aspnet/aspnet12/aspnet12_01.html

ベタな方法であれば、
クリックした行の背景色設定の前に、
For文などで全ての行をループして、
選択色の行があったら、デフォルトの背景色を設定する…とか。

[ツリー表示へ]
タイトルRe^2: ASP.NETでDataGridのクリックした行の背景色を変更
記事No2425
投稿日: 2005/10/17(Mon) 14:21
投稿者やまもと
さっそくレスありがとうございます。

> ベタな方法であれば、
> クリックした行の背景色設定の前に、
> For文などで全ての行をループして、
> 選択色の行があったら、デフォルトの背景色を設定する…とか。

ループさせてみようかと考えているのですが。。。
現在クリックした行の背景色設定を以下のソースで設定しています。

======================================================================================
    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgdKT_YEAR.ItemDataBound

        If (e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType =
ListItemType.AlternatingItem) Then
            e.Item.Attributes("onclick") = "this.style.backgroundColor='Gold'"

        End If
    End Sub

======================================================================================
この場合、どのタイミングでループすればよいでしょうか?
まだまだ初心者で申し訳ないです。。。

以上、宜しくお願い致します。

[ツリー表示へ]
タイトルRe^3: ASP.NETでDataGridのクリックした行の背景色を変更
記事No2426
投稿日: 2005/10/17(Mon) 18:08
投稿者なおこ(・∀・)
お世話になります。

そういう感じで表示したいのであれば、
こんな感じでしょうか。

■以下のJavaScriptをaspxに挿入。
<SCRIPT language=javascript type=text/javascript>
<!--
var currRow = -1;
var selRow = -1;
function onClick()
{
  srcElem = window.event.srcElement;
  //crawl up the tree to find the table row
  while (srcElem.tagName != "TR" && srcElem.tagName != "TABLE")
    srcElem = srcElem.parentElement;

  if(srcElem.tagName != "TR") return;
  if(srcElem.rowIndex == 0 ) return;
  if (selRow != -1) selRow.runtimeStyle.backgroundColor = '';
  srcElem.runtimeStyle.backgroundColor = "gold";
  selRow = srcElem;
}
// -->
</SCRIPT>

■DataGrid1_ItemDataBoundを以下の様にする。
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, _
                  ByVal e As WebControls.DataGridItemEventArgs) _
                  Handles DataGrid1.ItemDataBound
  If (e.Item.ItemType = ListItemType.Item _
    OrElse e.Item.ItemType = ListItemType.AlternatingItem) Then
    e.Item.Attributes("onclick") = "JavaScript:onClick()"
  End If
End Sub

# hhttp://msdn.microsoft.com/library/en-us/dndude/html/tablehl.htc
# をちょっといじっただけですが(^_^;

[ツリー表示へ]