- PR -

サーバーボタン(BUTTON)内部にイメージをはりつけたい

投稿者投稿内容
N.K
会議室デビュー日: 2003/05/12
投稿数: 8
投稿日時: 2004-03-24 16:54
ゆうじゅんさん、まゆりんさん、ありがとうございます。

全然ダメってことないです。
確かにボタンっぽくなりますね。
この方法でやったとして、もう一つ質問なのですが、画像サイズは小さいまま、ボタンのwidth,heightを大きくすることは出来るでしょうか?ちょっと大きめのボタンに小さいイメージ、というのを想定してまして、出来るならそのようにしたいと思っているのですが。難しいでしょうか。。?

質問ばっかりですみませんがよろしくお願いします。
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-03-24 17:03
引用:

私は、このボタンをDatagrid内部に設置して、押す毎にボタンのイメージを交互に
image1・image2と変更して表示させたいと思っています。
(「確認」→「確認取り消し」みたいなイメージ)
そこで、HTMLボタンをサーバーコントロールとしてあつかってみたのですが、サーバーコントロール化したHTMLボタンだとFindControlで取得出来ないことが分かりました(多分)。クリックイベントが発生させることが出来ませんでした。
そこで、サーバーコントロールにつけることは出来ないか、と思ったのです。



おそらくサーバコントロールにしてもFindControlで見つけることはできないと思いますが
試してみました?(コントロールIDが自動的に設定されるため)

なのでHTMLボタンでもFindControlではなく以下のようにすれば取得できるはずなので
試してみてはどうでしょうか?

コード:
HtmlInputButton GetButton( ControlCollection Controls )
{
	foreach( Control control in Controls )
	{
		if( control is HtmlInputButton ) 
			return (HtmlInputButton)control;
	}

	return null;
}


private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
	if( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
	{
		string uniqueID = e.Item.Cells[2].Text;

		// 編集ボタンにJAVAスクリプトを設定
		HtmlInputButton button = GetButton( e.Item.Cells[2].Controls );
		if( button != null )
		{
			button.Attributes["onclick"] = "window.location.replace( 'edit.aspx?UniqueID=" + uniqueID + "' )";
		}
	}
}


N.K
会議室デビュー日: 2003/05/12
投稿数: 8
投稿日時: 2004-03-24 17:40
ゆうじゅんさん、ありがとうございます。

私はテンプレート列にボタンを任意に設定して、IDをつけ(例:Btn)、
Datagrid_ItemDataBoud内で、
Dim aaa as Button = e.Item.FindControl("Btn")
と書いたら取得することが出来ました。

それから、ソース、ありがとうございます。
私はVB.NETしか分からないので、これから解析してみます。
(ちょっと時間がかかるかもです)
後で報告にきます!
N.K
会議室デビュー日: 2003/05/12
投稿数: 8
投稿日時: 2004-03-25 09:45
皆さん、たくさんの情報ありがとうございました。

ゆうじゅんさん、ソースを解析してVB.NETでやってみたら出来ました!
それに、attributeを使うことも、すっかり忘れてて、目からウロコでした。
本当にありがとうございました。

これからもよろしくお願いいたします。

スキルアップ/キャリアアップ(JOB@IT)