こんにちは、コードを少し変更する必要があります。ラジオボタンリストとテキストエリアのあるページがあります。ユーザーがラジオボタンを選択すると、テキストエリアにデータが入力されます。
また、ユーザーがラジオ ボタンを選択すると、URL は URL 内にエクステンションを保持し、どの選択インデックス番号が選択されているかを示します。(つまり、?selected=0)
http://test.com/frm_Articles.aspx?selected=0 http://test.com/frm_Articles.aspx?selected=1 http://test.com/frm_Articles.aspx?selected=2
そうすれば、URL をコピーして、他の Web サイトでリンクとして参照できます。またはお気に入りに配置します。
問題は、 URL を取得して新しいブラウザを開くと、ページが値を渡さず、それに応じてデータバインドすることです。ページにラジオ ボタンやコンテンツは表示されません。私が思うポストバックロジックに違いない???
何が機能していますか:
- Web サイトを起動すると、ラジオ ボタンが表示され、インデックス 0 が設定されます
- ラジオ ボタンを選択すると、正しいデータが表示され、ラジオ ボタンの値にリンクする URL がブラウザに表示されます (つまり、http://test.com/test.aspx?selected=2 )
- 同じブラウザ内でポインター URL をカット アンド ペーストすると、正しいデータがレンダリングされます
何が機能しないか (誤った PostBack を処理するすべて):
1.ウェブサイトを起動すると、ラジオボタンが0インデックスに設定されて表示されていても、テキストエリア内にデータが表示されません。2. ポインターの URL を新しいブラウザーにカット アンド ペーストすると、テキスト領域とラジオ ボタンが表示されません。
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
int selected;
if (Request.QueryString["selected"] != null)
{
if (int.TryParse(Request.QueryString["selected"], out selected))
{
RadioButtonList1.SelectedIndex = selected;
RadioButtonList1.DataBind();
}
}
else
{
int firstart = 0;
RadioButtonList1.SelectedIndex = firstart;
RadioButtonList1.DataBind();
}
}
}
protected void SqlDataSource2_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
//
}
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
try{
e.Command.Parameters["@URL_FK"].Value = Session["URL_PK"];
}
catch (Exception ex)
{
}
}
protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
{
string strRedirect;
strRedirect = "test.aspx?selected=" + RadioButtonList1.SelectedIndex;
Response.Redirect(strRedirect);
}
}