0

こんにちは、コードを少し変更する必要があります。ラジオボタンリストとテキストエリアのあるページがあります。ユーザーがラジオボタンを選択すると、テキストエリアにデータが入力されます。

また、ユーザーがラジオ ボタンを選択すると、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 を取得して新しいブラウザを開くと、ページが値を渡さず、それに応じてデータバインドすることです。ページにラジオ ボタンやコンテンツは表示されません。私が思うポストバックロジックに違いない???

何が機能していますか:

  1. Web サイトを起動すると、ラジオ ボタンが表示され、インデックス 0 が設定されます
  2. ラジオ ボタンを選択すると、正しいデータが表示され、ラジオ ボタンの値にリンクする URL がブラウザに表示されます (つまり、http://test.com/test.aspx?selected=2 )
  3. 同じブラウザ内でポインター 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);

    }


}  
4

2 に答える 2

1

Page_Loadこの行の前のイベントでのコード

RadioButtonList1.SelectedIndex = selected;

RadioButtonList1をバインドする必要があります。RadioButtonListをバインドした後、を設定できますSelectedIndex

于 2011-01-21T10:31:28.813 に答える
0

私の SqlDataSource1_Selecting メソッドが問題でした。私は別のアプローチを使用し、私のコードは機能しました。

于 2011-02-01T17:21:23.097 に答える