クリックイベント実行中に値が変更されるのですが、その値を取得したいと思っています。
ただその方法が分からないので、問題解決の考え方を教えていただきたいと思っております。
現状のシステムの具体的なイメージを申し上げますと、
申請画面があり、添付ファイルが付いている状態です。
この時持っている値として、Reqest.QueryStringメソッドで取得した既存の申請番号を持っています。
この既存の申請番号を添付ファイル名に付与しています。
↓
【やりたいこと】
最終承認ボタンクリックイベント後に、添付ファイルダウンロードリンクのクリックイベントを発生させた際に、
最終承認ボタンクリックイベント中に取得した新しい申請番号を添付ファイルダウンロードリンクのクリックイベントでも取得できるようにしたいです。
※ちなみにですが、最終承認ボタンクリックイベント内に添付ファイルダウンロードリンクのイベントを呼ぶという方法は無しでお願いいたします。
【現状】
添付ファイルダウンロードリンクのクリックイベント内で、Reqest.QueryStringメソッドを利用し、URLのパラメータの値を取得し、それを既存の申請番号(=添付ファイル名)として利用しているため、添付ファイルが見つからず、アプリケーションエラーになっています。
以下は、要所だけをまとめたイベントになります。
ちなみにどちらも同一クラスです。
ご参考までに書かせていただきます。
test.aspx start-- //フロント側の最終承認ボタンになります。 <div class= "button-area" id="ButtonArea" runat="server"> <asp:LinkButton ID="FinalApprovalLinkButton" runat="server" Text="最終承認" CssClass="button final-approval" Onclick="FinalApprovalLinkButton_Click"/> </div> //フロント側の添付ファイルダウンロードボタンになります。 <cc1:GridViewEx ID="AttachmentGridView" runat="server" CssClass="list-table" AutoGenerateColumns="false" OnRowCommand="AttachmentGridView_RowCommand" OnRowCommand="AttachmentGridView_RowDataBound" > <Columns> <asp:TemplateField ItemStyle-CssClass="download"> <ItemTemplate> <asp:LinkButton ID="DownloadLinkButton" runat="server" Text="ダウンロード" CommandName="FileDownload" CommandArgument='<%# Eval("Index") %>'/> </ItemTemplate> </asp:TemplateField> </Columns> </cc1:cc1:GridViewEx> test.aspx end-- --test.aspx.cs start-- --最終承認ボタンクリックイベントstart-- protected void FinalApprovalLinkButton_Click(object sender, EventArgs e) { // 新しい申請番号 int newDemandPeriod; →この値の初期値はnullです。 int newDemandNumber; →この値の初期値はnullです。 //最終承認処理 if (!ApproveFinal(out newDemandPeriod, out newDemandNumber)) return; /古い申請番号を取得 int oldDemandPeriod = int.Parse(Request.QueryString["Period"]; int oldDemandNumber = int.Parse(Request.QueryString["Number"]; //既存の添付ファイル名を変更する処理 //ここの処理は参考までに記載しております。 if (RenameAttachedFiles(oldDemandPeriod, oldDemandNumber, newDemandPeriod, newDemandNumber)) { return; } } --最終承認ボタンクリックイベントend-- --最終承認処理関数の中身start-- private bool ApproveFinal(out int newDemandPeriod, out int newDemandNumber) { //トランザクション管理は割愛させていただきます。 //最新の申請番号_期番を取得 //GetPeriod関数の中身は割愛しますが、現在日時の値を引数として、ある数字を取得しています。 newDemandPeriod = GetPeriod(DateTime.Now); //新しい信施番号_連番を取得 //GetDemandNumberの中身は割愛しますが、最新の申請番号_期番の値を引数として、連番を取得しています。 newDemandNumber = GetDemandNumber(newDemandPeriod); //古い申請番号を取得 int oldDemandPeriod = int.Parse(Request.QueryString["Period"]; int oldDemandNumber = int.Parse(Request.QueryString["Number"]; //申請情報を取得 //ここで古い申請番号をキーにして、T_申請テーブルからデータを取得しています。 //daoはT_申請TableAdapterです。 DataSet.T_申請.T_申請DataTable dt = dao.GetDataByPrimariKey(demandPeriod, demandNumber); //最終承認の値を設定 dt[0].申請番号_期番 = newDemandPeriod; dt[0].申請番号_連番 = newDemandNumber; //T_申請テーブルを更新 dao.Update(dt); } --最終承認処理関数の中身end-- --添付ファイルダウンロードリンクのクリックイベントstart-- //indexの引数に入ってくる値はGridViewの行数になります private void DownloadFile(int index) { //最新の申請番号を取得したいのですが、方法が分かりません。```ここに言語を入力 int newDemandPeriod = ?; int newDemandNumber = ?; //申請情報取得 DataSet.T_申請T_申請DataTable data = GetData(newDemandPeriod, newDemandNumber); DataTime stime = data[0].申請日時; //ダウンロード処理 //この関数内で添付ファイルをダウンロードしていますが、最新の申請番号と連番を取得できれば問題が解決します。 DownloadAttachedFile(引数1, 引数2, newDemandPeriod, data[0].申請日時]; } --添付ファイルダウンロードリンクのクリックイベントend-- --添付ファイル情報 行コマンド実行時処理イベントstart-- pretected void AttachmentGridView_RowCommand(object sender, GridViewCommandEventArgs e) { if(e.CommandName="FileDownload") DownloadFile(int.Parse(e.CommandArgument.ToString())); } --test.aspx.cs end--
試したこと
既存の申請番号を取得する方法として、Reqest.QueryStringメソッドを利用しているため、
Webページを更新すれば新しい申請番号を取得できると思い、Response.Redirect(Request.RawUrl,false)メソッドを利用しましたが、システムの都合上により使えない仕様となっているようなので、この方法は断念しました。
追加情報(FW/ツールのバージョンなど)
Web Formsを利用し、開発をしています。
【開発環境】
開発環境 VisualStudio2019
言語 C#
回答1件
あなたの回答
tips
プレビュー