ListView コントロールの内部では<ItemTemplate>
、LinkButton を使用しています。List が読み込まれると、一連の LinkButtons が含まれます。リンク ボタンのテキストは、データ ソースを使用して取得したレコードの列から生成されます。
LinkButton をクリックすると、ページ ポスト バックが発生したときに Label または TextBox に表示されるように、ポスト バック中に隠しフィールドまたはビュー ステートにテキストをキャプチャする必要があります。
ただし、最初のページのポストバックでは発生しません。代わりに、Label/TextBox に値を表示するには、LinkButton を 2 回クリックして 2 回ポストバックする必要があります。
最初のポストバックでそれを行うにはどうすればよいですか?
以下のように LinkButton だけを使用して、ListView なしで同じことを試してみましたが、同じ結果が得られました。
protected void LinkButton_Click(object sender, EventArgs e)
{
LinkButton selectedButton = (LinkButton)sender;
HiddenField1.Value = selectedButton.Text;
ViewState["LinkButtonText"] = selectedButton.Text;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(HiddenField1.Value))
{
Label1.Text = HiddenField1.Value;
}
TextBox1.Text = HiddenField1.Value;
if (ViewState["LinkButtonText"] != null)
{
if (!string.IsNullOrEmpty(ViewState["LinkButtonText"].ToString()))
{
ViewStateTextBox.Text = ViewState["LinkButtonText"].ToString();
}
}
}