您能帮我吗,即使我在gridview中检查控件,我也总是将复选框控件的值设置为false。

for (int i = 0; i < GridView1.Rows.Count; i++)
{
    CheckBox CheckBox1 = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");

    if (CheckBox1 != null)
    {
        if (CheckBox1.Checked)
        {
            query = GridView1.Rows[i].FindControl("Label1") + ",";
        }
    }
}

最佳答案

您是否在Page_Load方法上进行数据绑定?如果是,则必须执行以下操作:

if(!IsPostBack)
{
    GridView1.DataSource = YourData;
}


如果您不这样做,即使您的DataGridViewPostBack,也会被数据绑定。这样,无论您进行了什么检查,都会从数据源中重新填充DataGridView进行回发。

使用上面的代码,当您执行if(!IsPostBack)时,它将保留复选框的viewstate值,并且您将获得正确的Checked状态。

08-05 06:07