Web アプリケーションで奇妙なことが起こっています。2 つの変数を保持する単純なオブジェクトのコレクションを保持するために使用する静的辞書があります。
static Dictionary<string, linkButtonObject> linkButtonDictonary = new Dictionary<string, linkButtonObject>();
リンクボタンを含むグリッドビューがあり、各ボタンに関するデータは、ディクショナリのボタンに関連付けられています。
protected void hoursReportGridView_OnRowDataBound(Object sender, GridViewRowEventArgs e)
{
LinkButton btn = (LinkButton)e.Row.FindControl("taskLinkButton");
linkButtonObject currentRow = new linkButtonObject();
currentRow.storyNumber = e.Row.Cells[3].Text;
currentRow.TaskName = e.Row.Cells[5].Text;
linkButtonDictonary.Add(btn.UniqueID, currentRow);
}
次に、linkbutton がクリックされると、UniqueId を使用してディクショナリで値を検索し、それらを SQL クエリで使用し、取得したデータを使用してグリッドビューにデータを入力し、ラベルを付け、ポップアップを表示します。
protected void taskLinkButton_Click(object sender, EventArgs e)
{
//create linkbutton object from sender
LinkButton btn = (LinkButton)sender;
//get a list of data relevant to column
string[] infoData = getInfoData(linkButtonDictonary[btn.UniqueID].storyNumber,
linkButtonDictonary[btn.UniqueID].TaskName);
//assign content of list to labels and gridview
productDatabaseLabel.Text = infoData[0];
storyNumberDatabaseLabel.Text = infoData[1];
taskDatabaseLabel.Text = infoData[2];
pointPersonDatabaseLabel.Text = infoData[3];
SqlDataSource6.SelectParameters["storynumber"].DefaultValue = linkButtonDictonary[btn.UniqueID].storyNumber;
SqlDataSource6.SelectParameters["tasktitle"].DefaultValue = linkButtonDictonary[btn.UniqueID].TaskName;
infoGridView.DataBind();
//show popup
MPE.Show();
}
これはすべてうまく機能し、リンクボタンのいずれかをクリックすると、ポップアップが正しく作成されて入力され、表示されます。
私の問題は、ページを数分間アイドル状態にしてからリンクボタンをクリックすると、エラーが発生することです。
私は何を間違っていますか、どうすれば修正できますか?