- ベストアンサー
GridView リンク
VS2005 ASP.NET GridViewの検索結果で、 検索結果のひとつの部分がリンクになっていて (例:名前) それをクリックすると 別ページに飛んで 更にそのページのサイズを指定したり ツールバーなどをなしにする設定はどうしたらいいのでしょうか? わかりにくい説明で大変申し訳御座いませんが 宜しくお願い致します。
- aki05
- お礼率39% (9/23)
- Microsoft ASP
- 回答数3
- ありがとう数2
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
下記の続編です。 ページサイズやツールバーをなしにするのであれば、 Window.OpenのJavaScriptを埋め込んで遷移させたりもできます。 下記のソースの改変版になりますが、ご参考になれば幸いです。 Partial Class _Default Inherits System.Web.UI.Page Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _ Handles GridView1.RowCreated ' データ行以外の場合 If Not e.Row.RowType = DataControlRowType.DataRow Then Exit Sub End If ' Linkボタンに行番号引数を付与 Dim row As GridViewRow = e.Row Dim linkButton As LinkButton = CType(row.Cells(0).FindControl("LinkButton1"), LinkButton) linkButton.CommandArgument = e.Row.RowIndex ' LinkボタンにJavaScriptを埋め込み Dim scriptSource As String scriptSource = "javascript:window.open('NextPage.aspx', 'newWindow', 'width=300, height=300, menubar=no, toolbar=no, scrollbars=yes');" linkButton.OnClientClick = scriptSource End Sub Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) _ Handles GridView1.RowCommand Dim grid As GridView = TryCast(sender, GridView) If grid Is Nothing Then Exit Sub End If If e.CommandName = "NextPage" Then Dim index As Integer = Convert.ToInt32(e.CommandArgument) Context.Session("Clickされた行") = e.CommandArgument Context.Session("項目1") = CType(grid.Rows(index).FindControl("Column1"), Label).Text Context.Session("項目2") = CType(grid.Rows(index).FindControl("Column2"), Label).Text End If End Sub End Class
その他の回答 (2)
- kero_mio
- ベストアンサー率90% (94/104)
HyperLinkだと、どの行でClickされたか判別できる引数を 付与するのが難しいのと、JavaScriptの埋め込みが思うように できません。 今回の要件にあった次画面で開くWindowはResizeしたり、メニューバーやツールバーを消すのであれば、Window.OpenのJavaScriptの埋め込みが欠かせなくなります。 FireFoxとかであれば、開かれたWindow側のJavaScriptを使い メニューバー・ツールバーの制御ができるのですが、 IEだとWindow.Openを使うしか方法がありません。 そのため、LinkButtonの方が、JavaScriptの埋め込みも容易で、 ボタンに行番号等の引数(CommandArgument)も付与できるので、 便利かなと思った次第です。 ご参考になれば、嬉しいです。
- kero_mio
- ベストアンサー率90% (94/104)
こんなので如何でしょうか?GridViewまわりだけですが... ■Default.aspx <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommand="SELECT [CategoryId] AS '項目1', [CategoryName] AS '項目2' FROM [Category]"> </asp:SqlDataSource> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="項目1" DataSourceID="SqlDataSource1"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" CommandName="NextPage">名前</asp:LinkButton> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:Label ID="Column1" runat="server" Text='<%# Eval("項目1") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:Label ID="Column2" runat="server" Text='<%# Eval("項目2") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> ■Default.aspx.vb Partial Class _Default Inherits System.Web.UI.Page ' リンクボタンの引数設定 Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _ Handles GridView1.RowCreated ' データ行以外の場合 If Not e.Row.RowType = DataControlRowType.DataRow Then Exit Sub End If ' Linkボタンに行番号引数を付与 Dim row As GridViewRow = e.Row Dim linkButton As LinkButton = CType(row.Cells(0).FindControl("LinkButton1"), LinkButton) linkButton.CommandArgument = e.Row.RowIndex End Sub ' リンクボタンClick時、画面遷移 Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) _ Handles GridView1.RowCommand Dim grid As GridView = TryCast(sender, GridView) If grid Is Nothing Then Exit Sub End If If e.CommandName = "NextPage" Then Dim index As Integer = Convert.ToInt32(e.CommandArgument) Context.Session("Clickされた行") = e.CommandArgument Context.Session("項目1") = CType(grid.Rows(index).FindControl("Column1"), Label).Text Context.Session("項目2") = CType(grid.Rows(index).FindControl("Column2"), Label).Text Context.Response.Redirect("./NextPage.aspx") End If End Sub End Class ' NextPage.aspx.vb Partial Class NextPage Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Context.Response.Write(Context.Session("Clickされた行")) Context.Response.Write("<br>") Context.Response.Write(Context.Session("項目1")) Context.Response.Write("<br>") Context.Response.Write(Context.Session("項目2")) End Sub End Class ポイント ・Default.aspx にGridの一覧 ・NextPageが遷移先のページ ・Grid内の「LinkButton」には"NextPage"等任意の名前をつける ・GridView1_RowCommandイベントのe.CommandName で、どの種類のボタンが押されたか判断する (どの行が押されたかについても、RowCreatedイベントで、LinkButtonのCommandArgumentに紐付ければ RowCommandイベント で取得可能) ・押された行の表示値や入力値を取得したい場合は、RowCommandで取得可能 ・今回はSessionで値を保存しましたが、あとは、Response.Redirect でも、PostBackUrlメソッドでも遷移可能
補足
ご回答有難う御座います。 リンク方法ですが リンクボタンではなく HyperLinkで指定しているのですが リンクボタンでないと出来ないでしょうか?
関連するQ&A
- GridViewのボタンの高さ
vb.net(vs2005) asp.net GridViewのボタン(buttonfield)の高さを変えられないでしょうか。 ×リンク(文字列に変更し、フォントサイズを小さくする。) ×テンプレート列 以外でお願いします。 つまらないところで、困っています。(表が大きいので…)
- ベストアンサー
- その他(プログラミング・開発)
- gridviewの値でセッション書きこみ
現在、ASP.netにて以下のようなアプリを処理を実施しようとしています。 画面A(gridview使用) ------------------------------- 名前A | 項目A |備考A ------------------------------- 名前B | 項目B |備考B ------------------------------- 名前C | 項目C |備考C ------------------------------- ソース <asp:GridView ID="GridView" runat="server" AutoGenerateColumns="False" DataSourceID="ods1" > <Columns> <asp:BoundField DataField="namae" HeaderText="名前" SortExpression="namae" > </asp:BoundField> <asp:BoundField DataField="koumoku" HeaderText="項目" SortExpression="koumoku" > </asp:BoundField> <asp:BoundField DataField="bikou" HeaderText="備考" SortExpression="bikou" > </asp:BoundField> </Columns> </asp:GridView> このようなときに、2行目をクリックしたときは session(name) = "B" のようにクリックする行によってsessionを書くにはどうのようにすでばよいのでしょうか? 対応方法があれば教えてください。
- ベストアンサー
- Microsoft ASP
- GridViewにグループ化して表示させたい
ASP.NETの勉強のためにチームのメンバーを管理する ページを作っています。 VisualWebDeveloper2008のVBで作っています。 DBにはチーム名とチームの所属メンバーとメンバー一覧の3テーブルがあります。 これらをJOINしてGridViewに表示させたいと思います。 検索結果ではAチームに3人いる場合、3レコード取得されます。 画面に表示させるときには1レコードでメンバーの列だけ3行にしたいと思います。 Templateを指定するとできそうな気がするのですが、メンバーを検索するデータソースの条件にその行のチームコードを指定する方法が分かりません。 よろしくお願いします。
- 締切済み
- Microsoft ASP
- ASP.NET GridView の検索画面でのページング操作処理について
ASP.NET・WindowsXP・ACCESS2003DB・ 2005ExpressEdition 検索画面を作成しましたがうまく動作しません教えてください。 1.条件入力用のテキストボックス幾つか作成。 2.検索ボタンを作成。 3.GridViewに上記の条件でSqlDatasourceより データを表示できました。 4.1ページの件数10件を遥かにが多いため GridView下段にページ番号が表示される 5.ページ番号をクリックすると、全データが表示 される。 条件入力した値でのSQL文のルーチンを通っていない 為と思われるが、GridView下段にページ番号を クリックしたときのイベントに条件ルーチンを 挿入したいのですが教えて頂けますでしょうか よろしくお願いいたします。
- ベストアンサー
- Microsoft ASP
- gridviewをcsvダウンロード
何度もお世話になります。 提題のとおり、gridviewで表示させた内容をcsvでダウンロードさせたいと思っています。 (1)ボタン押下 (2)ポップアップでダウンロード確認画面 (3)保存ボタンを押すとファイル名およびファイル保存場所を指定する画面へ (4)OKで指定ファイル名で指定のファイル保存場所へ VS C#で開発する際にはSaveFileDialogに頼っていたのですが、 ASP.NET C#にはないのでしょうか… 何度も初歩的な質問申し訳ありませんが、ご存じの方、教えていただけると幸いです。 以上、よろしくお願いいたします。
- 締切済み
- Microsoft ASP
- ASP.NET2.0 GridViewのページャー設定について
お世話になります。 現在VS2005のASP.NETを学習しております。 GridViewコントロールのページャー設定について質問があります。 500レコード程のデータを1ページに10件ずつ表示しようと思い、 GridViewコントロールのPagerSettingsプロパティのVisibleをTrueに設定しました。 それだけでテーブル下にページ番号リンクが表示され、とても簡単で感動しました。 その後、同じくPagerSettingsプロパティのModeをNumericからNextPreviousに変更するなど、いろいろ試していました。 そこで気づいたのですが、そのモードの中にFirstLastとNumericが一緒になったものはあるのですが、 NextPreviousとNumericが一緒になったモードがありません。 冷静に考えると現在のページ番号の両隣のリンクを押せばいいだけなのですが、 頑固な方がどうしてもページ番号と前へ・次へボタンを一緒にしてくれと頼まれた場合、 そのようにカスタマイズすることは可能なのでしょうか? また可能な場合、どのようにすれば実現できるのでしょうか? 知っている方がいたら、どうぞ宜しくお願いします。
- 締切済み
- Microsoft ASP
- 隠しリンク?
このカテゴリであっているか不安ですが質問いたします。 隠しリンクというのは 背景と同色の文字で紛れ込ませていたり ★☆★←このような中に目的のリンク先を 紛れ込ませるものだと認識があるのですが このような例はなんと呼ぶのでしょうか? (例) 指定のリンクをクリックし元のページに戻る事によって 「こちらへどうぞ」などのリンクを出現させる 私のホムペで、これを使いたいのですが その名前が分からない為、調べられなくて。 名称及びPHPやHTMLなどのタグをご存知の方がいらっしゃいましたら 教えていただけないでしょうか? リンクの貼り付けなどでもかまいません。 説明が下手で申し訳ございませんがよろしくお願いいたします
- 締切済み
- PHP
- ASP.NET、リストビューでページ内リンク
お世話になります。 ASP.NETについて質問です。 HTMLにはページ内リンクというテクニックがあります。 <a href="#00">リンク</a>をクリックすると、 <a name="00"></a>と書いてある場所に飛ぶ、というものですね。 これをASP.NETのListviewでできないかと調べております。 具体的に書きますと、Linkbuttonをクリックすると、Listviewの10番目のインデックスの部分に移動する、という動きを実現したいのです。 コントロールの種類にこだわりはないので、Gridviewで実現できるなら、そちらでも構いません。 よろしくお願い致します。
- ベストアンサー
- Microsoft ASP
- プルダウンメニューからのリンクの貼り方
FORMのプルダウンメニューからリンクをはっていますが、新しいページを開くのはどうしたら良いでしょう? 今は <select name="menu" size="1" onchange="location=this.options[this.selectedIndex].value"> と書いていて、同じページ内で別ページに移動します。 またプルダウンメニューからのリンクで、ページサイズを指定したり、スクロールバー、ツールバーの表示も指定したいのですが出来るのでしょうか? ご存知なかたはよろしくお願いします。
- ベストアンサー
- JavaScript
- GridViewの項目編集(初歩)
いわゆるレガシー言語専門の技術者です。 事情があって、ASP.NETとVisualStudio2008(C#)でWebアプリを知人から頼まれて作っています。 クライアント/サーバ型のシステム開発歴は長いのですが、Web系は全くと言って良いほど経験がありません(個人商店のホームページを作ったくらいです)。 要件は以下のようになります。 検索条件を入力 →DBのマスタ検索 →対象データをGridViewに一覧表示 →項目を直接編集 ※解説サイトによくある、GridViewにボタンが配置してあって、ボタン押下で編集モードに移行する動きはNGです。あくまでも直接編集できなければいけません。 →入力後、更新ボタン押下により、画面情報でDB一括更新 この、GridViewの項目を直接編集するには、何というコントロールを使い、データベースと連動させるにはどうすれば良いのかが、さっぱりわかりません。 自力で頑張ってみたのですが、DBの値をGridViewに表示するには、asp:BoundField を使い、DataField にDBの項目名を指定すれば「表示」はされるところまでは確認できました。 ただ、これだと「編集」が出来ない...どうやら、asp:TemplateField というものを使うようだが、DBとバインドさせる方法は?編集可能にするには? ネットで色々と調べたのですが、(理解力が低いせいもあり)そのものズバリな表現で説明しているサイトは殆どなく、頭がパニックで力が尽きてしまいそうです。 私はWeb開発には向いていないのかも知れませんが、諸事情により、今回は何としてもやり遂げないといけません。 どなたか助けてください、よろしくお願いします。
- ベストアンサー
- Microsoft ASP
お礼
ご回答有難う御座います。 なるほど・・・ もう少しkero_mioさんのご回答くださったものを 参考にして 頑張ってみます!