在回发之间获得radiobox状态

时间:2011-06-30 09:15:11

标签: c# asp.net controls

I have got this code:

public partial class Default2 : System.Web.UI.Page
{
    public bool  MyProperty { get; set; }
    Button newBTN;
    GenerateMe gm;
    protected void Page_Load(object sender, EventArgs e)
    {

        newBTN = new Button();
        newBTN.Text = "Button 1";


        gm = new GenerateMe(PlaceHolder1, newBTN);
        gm.ExecuteAll();       
        Response.Write(gm.ResponseWrite());

    }


}

class GenerateMe
{
    PlaceHolder holder;
    Button button;
    RadioButton b = new RadioButton();
    string buttonPressed;

    public GenerateMe(PlaceHolder h, Button b)
    {
        holder = h;
        button = b;
    }

    public void ExecuteAll()
    {

        Table t = new Table();
        TableRow tr = new TableRow();
        TableCell tc = new TableCell();
        tc.Controls.Add(button);
        tr.Cells.Add(tc);
        t.Rows.Add(tr);
        holder.Controls.Add(t);
        holder.Controls.Add(b);
        if (b.Checked)//This is always false
        {
            buttonPressed = b.Checked.ToString();
        }

    }

    public string ResponseWrite()
    {
        return buttonPressed;
    }

}

我可以看到radiobox被检查..但是它的check属性在post backs之间的所有时间都是false。如果按下它,我如何得到无线电筒状态。

PS。我不想使用radioboxes事件..如果在回发后按下它我想获得一个属性

1 个答案:

答案 0 :(得分:1)

将变量保存在会话变量中。

Session["buttonPressed"]="checked";

在其他页面中将其命名为:

string check=Session["buttonPressed"].ToString();

编辑:

protected void Page_Load(object sender, EventArgs e)
    {
       if (!Page.IsPostBack)
       {   

        newBTN = new Button();
        newBTN.Text = "Button 1";


        gm = new GenerateMe(PlaceHolder1, newBTN);
        gm.ExecuteAll();       
        Response.Write(gm.ResponseWrite());
       }
    }

使用PreInit事件生成控件。