次のように、JavaScript コードを head に追加します:
<script lang=javascript>
function sel(i) // マウスを上に移動した後に実行
{
eval(i+".style.background='#CCCC66'"); // 行の色を変更します。
eval(i+".style.cursor='hand'"); // マウスを上に動かすと手の形に変わります
}
function unsel(i) // マウスが離れた後に実行されます
{
eval(i+".style.background=''");
}
関数 clicktr(i)
{
eval(i+".style.background=''");
window.open("Edit.aspx?param="+i,"変更","height=490,width=710,resizable=no,scrollbars=no,status=no,toolbar=no,
メニューバー = いいえ、場所 = いいえ、左 = 50、上 = 50");
}
</script>
DataGrid の ItemDataBound (データがバインドされるときに発生します) イベント:
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType != ListItemType.Header)
{
string ID = e.Item.Cells[0].Text; // ここの最初の列はデータ バインディングの ID 値です (変更されたページでパラメーターを渡す際に便利なように、複数のパラメーターがある場合はそれらを追加することもできます)必要に応じて!)
e.Item.Attributes.Add("id",ID);
e.Item.Attributes.Add("onmouseover","sel(" + ID+ ")");
e.Item.Attributes.Add("onmouseout", "unsel(" + ID+ ")");
e.Item.Attributes.Add("onclick", "clicktr(" + ID+")");
}
}
//**************************** 仕上げる******************* ***************************//
ただし、上記のアプローチでは、DataGrid にテンプレート列を追加すると不都合があります。ユーザーに選択の提供操作 (選択の削除など) を提供するために使用できます。
現時点では、上記の方法を使用すると、CheckBox を選択するたびに新しいウィンドウが表示されます (onclick イベントがトリガーされます)。
不適切な解決策:
元の行ベースの属性をテンプレートを除いて列ベースに変更します。列、すべて すべての列に属性を追加します。
たとえば、テンプレートが列 6 にリストされている場合は、cs ファイルを次のように変更できます。
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType != ListItemType.Header)
{
文字列 bm = e.Item.Cells[0].Text;
for(int i=0;i<5;i++)
{
e.Item.Cells[i].Attributes.Add("id","a"+i.ToString()+bm);
e.Item.Cells[i].Attributes.Add("onmouseover","sel(" +i.ToString()+","+ bm + ")");
e.Item.Cells[i].Attributes.Add("onmouseout", "unsel(" +i.ToString()+","+ bm + ")");
e.Item.Cells[i].Attributes.Add("onclick", "clicktr(" + bm +")");
}
}
}
JavaScript コードの場合:
function sel(i,ID)
{
for(var j=0;j<5;j++)
{ eval("a"+j.toString()+ID+".style.background='#CCCC66'"); eval("a"+j.toString()+ID+".style.cursor='hand'" );
}
}
関数 unsel(i,ID)
{
for(var j=0;j<5;j++)
{ eval("a"+j.toString()+ID+".style.background=''");
}
}
関数 clicktr(i)
{
for(var j=0;j<5;j++)
{
eval("a"+j.toString()+i+".style.background=''");
window.open("Edit.aspx?param="+i,"変更","height=490,width=710,resizable=no,scrollbars=no,status=no,toolbar=no,
メニューバー = いいえ、場所 = いいえ、左 = 50、上 = 50");
}
}