• ベストアンサー

LinkButtonコントロール

<ASP.NET> LinkButtonコントロールをGridViewのヘッダに作成しました。 このヘッダにマウスも持ってきた時のみそのセルのアンダーラインを出すにはどうすればいいのでしょうか? ご教授お願いします。 Dim LnkBtn As New LinkButton() LnkBtn.Text = "題名" LnkBtn.Attributes("Class") = "LnkBtn" LnkBtn.PostBackUrl = "xxx" LnkBtn.Font.Underline = False HeaderCell.Controls.Add(LnkBtn)

noname#208236
noname#208236

質問者が選んだベストアンサー

  • ベストアンサー
  • tochansa
  • ベストアンサー率76% (23/30)
回答No.2

下記サンプルの<style>~</style>を、 <head>内に追加してみてください。 (cssファイルを利用しているならそちらでも可。) リンクボタンの下線を普段は消しておいて、マウスが乗っかると出るようになるサンプル。 <html> <head> <style TYPE="text/css"> a{ text-decoration:none; } a:hover { text-decoration:underline; } </style> </head> <body> <asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton> </body> </html>

noname#208236
質問者

お礼

ありがとうございます。 CSSを使っていたので下記の通りでできました。 .LnkBtn { text-decoration: none; } .LnkBtn:hover { text-decoration: underline; }

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

サーバー側のイベントでは無理だと思いますよ クライアントサイドスクリプトの OnMouseOverやOnMouseOutなどを使う方向じゃないかと思います アンダーバーの表示/非表示の変更って出来るかが不明です ・・・

noname#208236
質問者

お礼

ありがとうございます。 サーバー側では無理でした。

関連するQ&A

  • 【VB2005】コントロールを配列に。

    下記のコードを変更して、コントロールの値を配列に代入して、 その値をもとに、ボタンを複製して追加したいと思っています。 Public Class frmStart Dim btnNewButton1 As New Button Private Sub frmStart_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load NewButton1.Text = "処理1" btnNewButton1.ForeColor = Color.DimGray btnNewButton1.Location = New Point(10, 100) btnNewButton1.Size = New Size(180, 30) '// ボタンを追加します Me.Controls.Add(btnNewButton1) end sub End Class やりたいことは、Dim btnNewButton() As New Button のようにデータを配列にして、 btnNewButton(0).ForeColor = Color.DimGray btnNewButton(0).Location = New Point(10, 100) btnNewButton(0).Size = New Size(180, 30) btnNewButton(1).ForeColor = Color.DimGray btnNewButton(1).Location = New Point(380, 100) btnNewButton(1).Size = New Size(180, 30) '// ボタンを追加します Me.Controls.Add(btnNewButton(0))     Me.Controls.Add(btnNewButton(1)) という事をしたいのですが、方法が解らなくて困ってます。 お知恵を貸してください。

  • GridViewにバインドせずにデータを表示する方法

    環境:VS2008&VB.NET&ASP GridViewに手動でテーブルからデータを読みデータバインドせず DBの値を表示する方法を考えていますがうまくいかず困っています。 (データバインドしたくない理由はデータバインドを行っていると行の挿入や移動ができない認識のためです。) 初心者のため見当違いなことをしているかもしれませんが それも含めまして質問させていただきます。 質問1 そもそもGridViewでデータバインドせずに手動でデータを表示することは可能でしょうか。 質問2 以下のコードで試しましたが「GridView1.Controls(0).Controls.Add(row1)」でExeptionが発生してしまいました。 手順に不適格な箇所があるのでしょうか。 strSql = "SELECT * FROM Data_Table" Using connection As New SqlClient.SqlConnection(cnStr) Dim command As New SqlClient.SqlCommand(strSql, connection) connection.Open() Dim dr As SqlClient.SqlDataReader = command.ExecuteReader While (dr.Read = True) 'データあり str1 = dr("data1") str2 = dr("data2") str3 = dr("data3") End If connection.Close() Dim item1 As DataGridItem item1 = New DataGridItem(-1, -1, ListItemType.Item) Dim cell0 As TableCell = New TableCell item1.Cells.Add(cell0) Dim cell1 As TableCell = New TableCell item1.Cells.Add(cell1) Dim cell2 As TableCell = New TableCell item1.Cells.Add(cell2) Dim row1 As New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal) row1.Cells.Add(cell0) row1.Cells.Add(cell1) row1.Cells.Add(cell2) GridView1.Controls(0).Controls.Add(row1) End While End Using エラーの内容 System.ArgumentOutOfRangeException はユーザー コードによってハンドルされませんでした。 Message="指定された引数は、有効な値の範囲内にありません。 パラメータ名: index" お力添えをよろしくお願い致します。

  • 実行時追加したコントロールの識別

    VB2008を使用しています。 プログラム実行中に追加したコントロールをどのように識別すればいいのかがわからなくて困っています。 例えば以下のようにすると、 itemsが1と2のコンボボックスが10個できますが、 すべてNewComboBoxという名前のコントロールのため、 最終的にそれぞれ1か2どちらを選択したかを知りたいときに、 10個のコントロールをどのように識別すればよいかわかりません。 Dim NewComboBox As ComboBox = New ComboBox() For i = 1 To 10 NewComboBox = New ComboBox() NewComboBox.Items.Add(1) NewComboBox.Items.Add(2) NewComboBox.Location = New Point(5, 5 + (24 * (i - 1))) Me.Controls.Add(NewComboBox) Next 説明が不明瞭であるかもしれませんが、 お分かりの方いらっしゃいましたら、ご回答願います。

  • VB2005で、動的にコントロールを作成出来ない件

    MDIのフォームで、 子フォーム1にコントロール(ラベルなど)を追加したい場合、 子フォーム2のボタンクリックで追加しようとすると 追加されません。 (子フォーム1のボタンで同一フォームへコントロールを  追加しようとすると追加できました。) どのようにすれば追加できるでしょうか? 子フォーム2の追加ボタン関数のコード Private Sub Add_click()  AddLabel(子フォーム1, "hogehoge") End Sub モジュール(関数群)のコード Private Sub AddLabel(Byval objForm As Form, ByVal strText As String)  Dim ctlAddLabel As New Label()  With ctlAddLabel   .AutoSize = False   .Location = New Point(0, 0)   .Size = New Size(200, 40)   .Name = "Label" & Counter 'Counter は追加の度に1ずつ増えます   .Text = strText  End With  objForm.Controls.Add(ctrlAddLabel) End Sub

  • Formに貼り付けたActiveXコントロールへの

    Formに貼り付けたActiveXコントロールへのアクセスを別Classに担当させる方法 プログラミング初心者です。 現在VB.NETでRS-232Cで接続するデバイスを制御するフォームアプリケーションを作成しています。 デバイス制御にはメーカからActiveXコントロールが配布されており、それをフォームに貼り付けて基本的な動作をさせるところまではできています。 ただ、現在全てのコードがForm1クラスに記述されており、今後ボリュームが増えていくとメンテがしづらくなりそうですので、まとまった各機能群を別のクラスとして作成したいのですが、フォームに貼り付けたActiveXコントロールを別のクラスから動かすためにはどうすれば良いのかわかりませんので教えていただけないでしょうか。 以外検討してだめだったものです。 Class Class2 Dim frm As Form1 = New Form1 frm.AxSample1 End Class 上記のようにForm1のインスタンスを作成するのも何かが違う気がしますし…。 Class Class2 Dim frm As Form Public Sub New(ByVal senderfrm As Form) frm = senderfrm End Sub frm.AxSample1 End Class 上記だとAxSample1がClass2に認識されるはずもないですし…。 Importsとか色々試してみたのですがうまく行かず…という状況です。 そもそも根本的に別クラスにさせようということがおかしい、などの回答でも結構です。 よろしくお願いいたします。

  • 動的に作成したコントロールの削除方法

    はじめまして。 現在ASP.net でweb画面を作成していますが、動的に作成したコントロールの削除が不規則な動きをしており困り果ててこちらにきました。よろしくお願いします。 配置してあるテーブルに行だけを動的に追加しており その行には、テキストボックスと削除ボタンが含まれています。 不規則な動きというのは、以下になります。 1行目の削除ボタンを押す→1行目が消える 1行目になった削除ボタンを押す→変化なし 1行目の削除ボタンを押す→末尾の行が消える という状態です。デバッグで確認すると、 Removeで消しているコントロールIDは確かに1行目のものなのに、 画面が開くとそれが残っているという現象です。 そしてなぜ末尾が途中から消されていくのかは分かりません。 もしかして思うのは、毎回Loadで動的に生成しているため、 削除ボタンが押されたときもLoad一度生成したものをイベントハンドラで削除しようとしていておかしくなるのかなという気もしますが、 毎回生成しないとコントロール自体が消えてしまい、Loadでなくイベントハンドラで生成するようにすると、今度は入力値が消えてしまいます。 ソースは以下になります。(一部抜粋) とても困っています。宜しくお願いします。 'テーブルの枠だけデザイナで作成しておく <table id="tblDynamic" runat="server" enableviewstate="false">  </table> 'ロード Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load  ’配置してあるテーブルに行を動的に追加する  For rowCnt As Integer = 1 To 10   tblFormat.Rows.Add(retCreateRow(rowCnt))  Next End Sub ’テーブルの行(コントロールを含む)を作成して返す関数 Function retCreateRow(rowCnt As Integer) As HtmlTableRow  Dim tr As New HtmlTableRow  Dim cel1 As New HtmlTableCell  Dim cel2 As New HtmlTableCell  Dim txt As New TextBox  Dim btn As New ImageButton  txt .ID = "txt " & "_" & rowCnt cel1.Controls.Add(txt)  tr.Cells.Add(cel1)  btn.ID = "btn" & "_" & rowCnt  btn.text="行削除" AddHandler btn.Click, New System.Web.UI.ImageClickEventHandler(AddressOf btnDelete_btnInsert) cel2.Controls.Add(btn)  tr.Cells.Add(cel2)  Return tr End Function '行削除イベントハンドラ Private Sub btnDelete(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim ControlIdx = Split(CType(sender, ImageButton).ID, "_")(1) 'この削除ボタンがある行Indexを取得 For HitIdx As Integer = 1 To tblFormat.Rows.Count If Not IsNothing(tblFormat.Rows(HitIdx).FindControl(CType(sender, ImageButton).ID)) Then 'あった!この行を削除する Me.tblFormat.Rows.RemoveAt(HitIdx) Exit For End If Next End Sub

  • 【ASP.NET】DataSetをSqlDataSourceに組み込めますか?

    ASP.NET Visual Studio 2005で開発を行っています。 GridViewのページングの機能を使用するには、「SqlDataSource」や「ObjectDataSource」を使用しないと有効にならないと思いますが、データベースがDataSetになっています。 この状態から、GridViewにデータをバインドし、ページングを有効にさせるには、どうしたらよいでしょうか?? SqlDataSourceにDataSetを持っていくという方法が調べても、分かりませんでした。 以下が使用しているソースです。 これですと、ページングが有効にならず、エラーになる状態です。 ============================================= Dim dSet As Data.DataSet = New Data.DataSet("データ") Dim dTbl As Data.DataTable Dim dRow As Data.DataRow dTbl = dSet.Tables.Add("データ") dTbl.Columns.Add("aaa", Type.GetType("System.String")) dRow = dTbl.NewRow() dRow("aaa") = "bbb" dTbl.Rows.Add(dRow) Me.GridView1.DataSource = dTbl Me.GridView1.DataBind() ====================================== どうぞ、宜しくお願いします。

  • イメージコントロールの代入を簡単にしたい。

    エクセル2003のVBAで次のイメージコントロールの代入処理をループや配列などを使って簡単にしたいのですが出来ますでしょうか? Dim photo As New Collection photo.Add Item:=Image1 photo.Add Item:=Image2 photo.Add Item:=Image3 photo.Add Item:=Image4 photo.Add Item:=Image5 photo.Add Item:=Image6 photo.Add Item:=Image7 photo.Add Item:=Image8 photo.Add Item:=Image9 photo.Add Item:=Image10・・・以下は~image26まで続いています。以下省略。image1~26はイメージコントロールです。

  • ユーザーコントロールにイベント追加

    VisualBasic2013で開発を行っております。 DataGridViewを継承したユーザーコントロールを作成しているのですが、 以下のような実装は可能なのでしょうか。 ・継承したユーザーコントロールにDataGridViewのMouseClickイベント発生時  の処理を実装し、共通処理としたい。 現状のソースは以下の通りです。 初歩的なご質問で恐縮ですが、実装方法が分る方がいらっしゃいましたら ご教授頂けますと幸いです。 Public Class H_DataGridView ''' <summary> ''' コンストラクタ ''' </summary> ''' <remarks></remarks> Public Sub New() ' この呼び出しはデザイナーで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 '/*************** '/ フォント '/*************** '/ ヘッダ部のフォント[Meiryo UI] Me.ColumnHeadersDefaultCellStyle.Font = New Font("Meiryo UI", 9) '/ 明細部のフォント[Meiryo UI] Me.DefaultCellStyle.Font = New Font("Meiryo UI", 9) '/*************** '/ 表示位置 '/*************** '/ ヘッダ部の表示位置[中央寄せ] Me.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter End Sub '/****************************************************************** '/ ここにマウスクリック時イベントを組み込み、共通処理にしたい '/****************************************************************** End Class

  • サブフォームのTab移動について

    VB2005で開発を行っております。 とあるサイトでMDIとは別の方法でフォーム内にフォームを貼り付けることができることを知りました。 以下がその簡単なコードです。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim f As New Form2() f.TopLevel = False Me.Controls.Add(f) f.Show() f.BringToFront() End Sub End Class ここでそれぞれのフォームにTextBoxなどのコントロールを貼り付け、Tabキーによるフォーカス移動を行うと、Form1のコントロールからForm2のコントロールへの移動は行えるのですが、その後はForm2のコントロール内のみフォーカス移動が行われてしまいます。 できればForm2がGroupBoxやPanelコントロールのように動作してほしいのですが、どのようにすればよいでしょうか?