###前提・実現したいこと
ASP.NET Webフォーム を利用しまして、
社内用のwebアプリケーションを作成したいと考えています。
Webアプリケーションの内容は、
事前にデータベース(SQL Server) に
ファイル名 保存先
A001.xlsx \serverA\品質
A002.xlsx \serverC\管理
B001.docx \serverB\運用
といったように、ファイル名をキーに 保存先も登録しておき
Webアプリケーションの画面から
ファイル名を検索しますと、
GridView上 にファイル名一覧と詳細ボタンが表示され
詳細ボタンを押すと対象ファイルが開く。
というページを作成したいです。
画面イメージとして、
テキストボックスに :A と入力して "検索" ボタンを押す
A001 詳細
A002 詳細
と表示され、"詳細"(ButtonField) を押すと 対象ファイルが開く。
この際、GridViewに保存先は表示しません。
と実施したいのですが、
このButtonField イベントをどのようなソースをどこに記載していいかが不明です。
画面イメージは完了しています。
ASP.NET が初心者のため、素人の質問で誠に恐縮です。
ご不明点は記載いたしますので、どうかご教示いただきたく存じます。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ファイルパスを管理する方法は、ファイル実体の移動や更新、ロックなどとても面倒です。
SQL Server 2012 以降なら FileTable それより前のバージョンなら FileStream を使うことをお勧めします。
下記はCodeZine様のページへのリンクです。
SQL Server開発の利便性を向上させるFileTable/シーケンスオブジェクト/ページング機能
投稿2017/03/27 01:57
総合スコア4150
0
ベストアンサー
以下の記事のように GridView に一覧を表示、DetailsView で編集を行うイメージですか?
GridViewとDetailsViewでデータ管理ページを作成する
https://codezine.jp/article/detail/379
質問者さんのやりたいことと違う場合は、具体的にどこがどのように違うのか書いてください。
***************** 追記 *****************
2017/03/27 14:06 のコメントに「Button を使った例を回答欄に追記しておきます。」と書きましたが、それを以下に追記します。
データソースコントロールに SqlDataSource を使用し、その ID を GridView の DataSourceID に設定して使うとします。
GridView では、ButtonField ではなく、Template に Button コントロールを配置してそれを使います(そちらの方が自分的には簡単なので)。
以下のような SELECT クエリでフルバス+ファイル名.拡張子の文字列が FileName として取得できるとします。
SELECT DocumentID, Title, FileName FROM Production.[Document]
その条件で、以下のようなコードを書けば Button クリックでダウンロードされるはずです。
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Button1_Click(object sender, EventArgs e) { if (((Button)sender).CommandName == "download") { string filename = ((Button)sender).CommandArgument; // filename にファイルのパスが取得できる。それを使って以下にファイルをダウンロード // するためのコードを書く。 // 注意事項としては: // キャッシュを許可するか否か、許可する場合は有効期限を指定しておく。 // Content-Disposition: attachment; filename= で指定するファイル名.拡張子、 // Content-Type: で指定する MIME Type は両方とも正確に設定すること。 // 日本語のファイル名は文字化けに注意。 // ファイルのダウンロードは TransmitFile メソッドを使うのがお勧め。 // .aspx ページのメソッドを使う場合は Response.End() を忘れずに。 } } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorks %>" SelectCommand="SELECT DocumentID, Title, FileName FROM Production.[Document]" > </asp:SqlDataSource> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="DocumentID" DataSourceID="SqlDataSource1"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:Button ID="Button1" runat="server" Text="Button" CommandName="download" CommandArgument='<%# Eval("FileName") %>' OnClick="Button1_Click" /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="DocumentID" HeaderText="DocumentID" InsertVisible="False" ReadOnly="True" SortExpression="DocumentID" /> <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> </Columns> </asp:GridView> </form> </body> </html>
もし、質問者さんの SQL Server データベースの [テーブル] では [保存先] (パス)と [ファイル名] (ファイル名.拡張子)というフィールドが別々になっている場合は以下のようにクエリを工夫してください。
SELECT ... ([保存先] + "" + [ファイル名]) AS FileName FROM [テーブル]
投稿2017/03/27 00:54
編集2017/03/27 05:31退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/03/27 02:56 編集
2017/03/27 03:04
退会済みユーザー
2017/03/27 05:06
2021/09/23 08:31
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/27 02:39