0

ラジオ ボタンのリストがあり、ユーザーがボタンを選択すると、ページがリロードされ、正しい情報が表示されますが、ボタンが表示されません。

これを回避する方法はありますか?

HTMLは次のとおりです。

        <div class="checkBoxesColumn">
            <label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="viewAll" value="0" runat="server" />View All</label>
            <label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="journey" value="1" runat="server"  />My MBC Journey</label>
            <label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="challenges" value="2" runat="server"  />Challenges</label>
            <label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="advice" value="3" runat="server"  />Positive Outlooks &amp; Advice</label>
            <label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="thanks" value="4" runat="server"  />Giving Thanks</label>
            <label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="perspective" value="5" runat="server"  />Family / Friend Perspective</label>
        </div>

コードビハインドは次のとおりです。

protected void Page_Load(object sender, EventArgs e)
    {
        // HIDE UNTIL 10/13
        if (DateTime.Now > new DateTime(2012, 9, 12))
        {
        mbcRadioList.Visible = true;
        }

    video myVideo = new video();

    string categoryID = "0";
    if (!string.IsNullOrEmpty(Request["category_id"])) categoryID = Request["category_id"];

    Hashtable ht = myVideo.ListingForWall(categoryID);
    //Response.Write("Test: " + ht.Count);
    //Response.Write("Test: " + ht["B-01"]);

    StringBuilder myStringbuilder = new StringBuilder();

    for (int i = 1; i <= 36; i++)
    {
        string iStr = i.ToString();

        if (iStr.Length == 1) iStr = iStr.PadLeft(2, '0');

        //Response.Write("A-" + iStr + "<br />");             
        //Response.Write("TEST: " + ht["A-" + iStr] + "<br />");

        string videoClass = "videoWallThumb thumb" + iStr;

        if (ht["A-" + iStr] != null)
        {
            string[] tmp = ht["A-" + iStr].ToString().Split('|');

            if (tmp[2] == "0") videoClass += " disabled ";

            myStringbuilder.AppendLine("<a class=\"" + videoClass + "\" href=\"videoWallDetail.aspx?video_id=" + tmp[0] + "\"><img src=\"images/video_images/" + tmp[1] + "\" alt=\"\"/></a>");
        }
        else
        {
            videoClass += " incomplete ";
            myStringbuilder.AppendLine("<a class=\"" + videoClass + "\" href=\"#\"><img src=\"images/placeholder.jpg\" alt=\"\"/></a>");
        }

    }

    mosaicA.Text = myStringbuilder.ToString();
}

私が提供したコードが十分でない場合やわかりにくい場合は、お知らせください。次の問題に進むことができるように、この小さな問題を解決しようとしています。

前もって感謝します!

4

3 に答える 3

2

それはViewStateの問題だと思います。ビューステートが維持されるのは Web コントロールのみで、ポストバック間で情報が保持されます。

これを確認してください: ViewState が維持されているコントロールはどれですか?

于 2012-09-18T19:25:32.553 に答える
1

チェックボックスがオンになっているときにセッション変数を設定してみましたか?このようにページのリロードで、どれが選択されているかを確認し、その1つをtrueに設定できます。

したがって、ラジオボタンのIDを使用してセッション変数を設定してみて、それが戻ったときに変数を読み取り、そのセッション変数が保持しているIDをtrueに設定します。

これについてもっと良い方法があるかどうかはわかりませんが、最初に頭に浮かんだのはそれです。

私が提案できる他の唯一のことは、Webページ全体がリロードされないようにAJAX呼び出しを使用して部分的な更新を行う場合です。

于 2012-09-18T19:15:20.827 に答える
0

気にしないで、category_id で switch ケースを使用しました...

    switch ((Request["category_id"]))
    {
        case "0": viewAll.Checked = true; break;
        case "1": journey.Checked = true; break;
        case "2": challenges.Checked = true; break;
        case "3": advice.Checked = true; break;
        case "4": thanks.Checked = true; break;
        case "5": perspective.Checked = true; break;
    }
于 2012-09-18T19:34:25.120 に答える