C# Radiobutton选中或更改会产生问题

C# Radiobutton选中或更改会产生问题,c#,asp.net,.net,C#,Asp.net,.net,我正在创建一个包含运行时链接按钮、单选按钮和复选框列表的页面。本例中的数据源是数据所在的数据表 在页面加载时,我将单选按钮文本部分与数据表的第一行绑定,同时创建运行时链接按钮。现在,单击第二个链接按钮的,单选按钮文本属性与数据表的第二行绑定 最初,与每个单选按钮关联的复选框列表处于非活动状态。我的主要动机是启用单选按钮CheckedChanged属性上的复选框列表。但每当我点击单选按钮时,单选按钮和复选框列表的整个文本部分就会消失。但在第一种情况下(页面加载时),当单击单选按钮时,对应于该单选按

我正在创建一个包含运行时链接按钮、单选按钮和复选框列表的页面。本例中的数据源是数据所在的
数据表

在页面加载时,我将
单选按钮
文本部分与
数据表
的第一行绑定,同时创建运行时链接按钮。现在,单击第二个链接按钮的
,单选按钮文本属性与
数据表的第二行绑定

最初,与每个单选按钮关联的复选框列表处于非活动状态。我的主要动机是启用单选按钮
CheckedChanged
属性上的复选框列表。但每当我点击单选按钮时,单选按钮和复选框列表的整个文本部分就会消失。但在第一种情况下(页面加载时),当单击单选按钮时,对应于该单选按钮的复选框列表将启用,但在任何其他情况下都不会启用。我的详细代码是:

protected void Page_Load(object sender, EventArgs e)
{
    string Query = "select Q101004,Q101005 from Q101 where Q101001<110000013";
    DataTable dt = ExecuteDataset(Query).Tables[0];
    ViewState["dt"] = dt;

    Table t = new Table();
    TableRow r = new TableRow();
    t.Rows.Add(r);
    TableCell c = new TableCell();
    lnkbtn = new LinkButton();
    r.Cells.Add(c);

    rb = new RadioButton();
    rb.AutoPostBack = true;
    rb.ID = "m";
    rb.GroupName = "a";
    rb.Text = dt.Rows[0][0].ToString();

    CbxList = new CheckBoxList();
    CbxList.ID = "Cbx";
    CbxList.Enabled = false;
    CbxList.RepeatDirection = RepeatDirection.Horizontal;
    CbxList.RepeatColumns = 2;
    CbxList.CellPadding = 10;
    CbxList.CellSpacing = 5;
    CbxList.RepeatLayout = RepeatLayout.Table;
    options = dt.Rows[0][1].ToString().Split('~');
    PlaceHolder2.Controls.Add(new LiteralControl("<br/>"));
    for (int j = 0; j < options.Length; j++)
    {
        CbxList.Items.Add(new ListItem(options[j], options[j]));
    }

    PlaceHolder2.Controls.Add(rb);
    PlaceHolder2.Controls.Add(CbxList);

    for (int i = 0; i < dt.Rows.Count; i++)
    {
        lnkbtn = new LinkButton();
        lnkbtn.Text = (i + 1).ToString();
        lnkbtn.Width = 22;
        lnkbtn.Visible = true;
        lnkbtn.CommandName = "Test" + i;
        lnkbtn.CommandArgument = "Hi" + i;
        lnkbtn.ID = "Hi" + i;
        PlaceHolder2.Controls.Add(lnkbtn);
        lnkbtn.Click += new EventHandler(lnkbtn_Click);
    }
    rb.CheckedChanged += new EventHandler(rb_CheckedChanged);
}

void lnkbtn_Click(object sender, EventArgs e)
{
    DataTable dt = (DataTable)ViewState["dt"];

    for (int j = 1; j < dt.Rows.Count; j++)
    {
        lnkbtn = (LinkButton)PlaceHolder2.FindControl("Hi"+j);
        string str = ((LinkButton)sender).CommandArgument;
        //lnkbtn.Enabled = true;
        if (lnkbtn.ID == str)
        {
            rb = new RadioButton();
            rb.AutoPostBack = true;
            rb.ID = "m"+j;
            rb.GroupName = "a";
            rb.Text = dt.Rows[j][0].ToString();

            CbxList = new CheckBoxList();
            CbxList.ID = "Cbx"+j;
            CbxList.Enabled = false;
            CbxList.RepeatDirection = RepeatDirection.Horizontal;
            CbxList.RepeatColumns = 2;
            CbxList.CellPadding = 10;
            CbxList.CellSpacing = 5;
            CbxList.RepeatLayout = RepeatLayout.Table;
            options = dt.Rows[j][1].ToString().Split('~');
            PlaceHolder2.Controls.Add(new LiteralControl("<br/>"));
            for (int i = 0; i < options.Length; i++)
            {
                CbxList.Items.Add(new ListItem(options[i], options[i]));
            }

            PlaceHolder2.Controls.Add(rb);
            PlaceHolder2.Controls.Add(CbxList);
        }
    }
}

void rb_CheckedChanged(object sender, EventArgs e)
{
    Cbx = (RadioButton)PlaceHolder2.FindControl("m");
    Cbx1 = (CheckBoxList)PlaceHolder2.FindControl("Cbx");

    if (Cbx.Checked == true)
    {
        Cbx1.Enabled = true;
        ViewState["Cbx1"] = "Cbx";
    }
}
受保护的无效页面加载(对象发送方,事件参数e)
{

string Query=“从Q101中选择Q101004、Q101005,其中Q101001每次单击按钮(或发回)时,
Page_Load()在单击/Action event
之前触发。因此,您需要确保只有在页面未发回时才执行初始页面加载代码。您可以通过检查
if(!Page.IsPostBack){

我想这可能会解决你的问题

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack){
      //your initial page load code should go here
      //this code will not be executed when page is posting back 
    }
}