0

重複の可能性:
ラジオボタンの選択へのリンク、asp.net c#

テキストエリアとラジオボタンのあるページがあります。テキスト領域には、ラジオ ボタンの選択に基づいてデータが入力されます。ユーザーがラジオボタンの選択にリンクできるように、ラジオボタンの選択がURLに表示されるようにします。

私がする必要があるのは、クエリ文字列を変更してラジオボタンの値を含めることだけです。これは、ラジオボタンを選択したときにフィドラーによってキャプチャされたデータです。

 __EVENTTARGET  ctl00$MainContent$RadioButtonList1$6
__EVENTARGUMENT 
__LASTFOCUS 
__VIEWSTATE /+++PC9wPg0KPHA+/....
__EVENTVALIDATION   /wEWCwKY7d6oAQLh8vmTCALk7M7lDQK+6NunDwK/6OenDwK86OenDwK86OunDwK86POnDwK96NenDwK96NunDwKxh73KA3Q+PMuKU/JUCKsF1aiY2DNLu7/pFFni/Qtz+7FXy35g
ctl00$MainContent$RadioButtonList1  41

ラジオボタンの値を指すには、URLが次のように見えるだけでよいことを望んでいますが、必要なのは適切な構文だけです。

http://www.test.com/test.aspx?ctl00$MainContent$RadioButtonList1$41

---コードビハインド ---

protected void Page_Load(object sender, EventArgs e)
    {


        if (Page.IsPostBack == false)
        {


            RadioButtonList1.SelectedIndex = 0;
            RadioButtonList1.DataBind();

        }

        else
        {

            string strRedirect;

            strRedirect = "frm_Articles.aspx?Article_PK=" + RadioButtonList1.SelectedValue.ToString();

            Response.Redirect(strRedirect);


        }
    }  



    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)
     {

     }


    }



}
4

1 に答える 1

0

注意すべきことの 1 つは、URL を誤って構成していることです。そのはず:

http://www.test.com/test.aspx?ctl00$MainContent$RadioButtonList1=41

(最後から 3 番目の文字は = であることに注意してください。

それとは別に、選択したラジオボタンを選択するという点でページがどのように機能するかによって異なります。私のアドバイスは、それを試してみて、何が起こるかを確認することです. ただし、ページの読み込み時に発生するイベント (つまり、ある種のポストバック動作) に基づいて実行している場合は、機能しないと思われます。

この場合、ページの読み込み時に何かを実行して、その値が URL に存在するかどうかを確認し、テキストを読み込む前に設定する必要があります。このルートにたどり着いた場合は、より明確に定義されたユーザーフレンドリーなクエリ文字列パラメーターの使用を検討することをお勧めします。特に、そこにある id は、コントロール階層内の位置に基づいて構築されます。HTML 構造を再設計すると、ID が変更される可能性があります。

さらに...

ラジオボタンリストの selectedindex を設定する場所で提供したコードを使用して、設定する前に必要な値を見つけて、より良い値がない場合は 0 に設定する必要があります (0 に設定しているように見えますが)余分なように見えるバインディングの前に)。このようなものは機能する可能性があります(コンパイルまたはテストされていないため、タイプミスをお詫びします-最終的なコードではなく、一般的なアイデアを提供するように設計されています)。

if (Page.IsPostBack == false)
{
    RadioButtonList1.DataBind();
    //Check if you have a value to set.
    if (Request.Querystring(RadioButtonList1.ClientID)!=null)
    {
        //Get the value
        string setValue = Request.Querystring(RadioButtonList1.ClientID)
        //Find the right radio option to select
        foreach(ListItem item in RadioButtonList1.Items)
        {
            if (item.Value == setValue)
            {
                item.Selected = true;
                break;
            }
        }
    }

}

何も選択されていない場合、選択されたインデックスはデフォルトで 0 になると思います。

とにかく、このコードは作業の開始点として意図されています。他にも方法があるかもしれませんし、もっと良い方法もあるかもしれません。

于 2011-01-20T10:07:14.013 に答える