回发后保留表格并选中复选框

时间:2015-12-06 09:42:00

标签: c# asp.net checkbox

在我的网页上,我有日历,表格和按钮。

选择日期后,将触发表的databind()方法。有一个autopostback = true的复选框。检查后,表格消失。我不知道如何在回发后使用选中的复选框保留表格。

 protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString.Get("Id") != null)
        {

            if (!IsPostBack)
            {
                Calendar1.Visible = false;

            }
        }
    }

 protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {
            Label1.Text = Calendar1.SelectedDate.ToShortDateString();
             //Set datasource = (cal.selectedDate), the invoking override 
                 // DataBind() method to create table

                }
            Calendar1.Visible = false;

        }

我已尝试再次对数据表进行数据绑定(IsPostBack),但我无法实现目标,相反,它在现有表格上创建了​​另一个表格

这是使用复选框创建表的方法

public override void DataBind()
    {
            TableRow myTableRow = default(TableRow);
            TableCell myTableCell = default(TableCell);

        if (source != null && !(mDate == DateTime.MinValue))
        {

            for (int i = 0; i <= 23; i++)
            {

                foreach (DataRow row in source.Tables["Object"].Rows)
                {
                    myTableCell = new TableCell();
                    CheckBox cb = new CheckBox();
                    cb.AutoPostBack = true;
                    cb.Attributes.Add("id", row["objid"].ToString());
                    cb.InputAttributes.Add("rowID", mDate.Date.AddHours(i).ToString());
                    myTableCell.Controls.Add(cb);
                    myTableCell.HorizontalAlign = HorizontalAlign.Center;

                    myTableRow.Cells.Add(myTableCell);


                    TimeSheetTable.Rows.Add(myTableRow);
                }
            }
        }
        else
        {
            throw new ArgumentException(" Invalid Date.");
        }
    }

1 个答案:

答案 0 :(得分:1)

每次回发都需要重新生成动态生成的表。对于后续回发,将重新加载viewstate,但您必须以相同的方式重新创建表,单元格和控件,否则Web表单会抱怨它。你需要在Init期间这样做我相信;如果复选框选中状态已更改,则Web表单框架将在加载后更新Checked属性,以便进行处理。

我通常使用转发器或listview控件,因为动态控件可能很痛苦,而且ListView非常灵活。数据绑定负责为您重建控制树。