请你帮我解决这个问题,即使我检查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") + ",";
}
}
}
答案 0 :(得分:2)
您是否在Page_Load方法上进行数据绑定?如果是,您必须这样做:
if(!IsPostBack)
{
GridView1.DataSource = YourData;
}
如果您不这样做,即使DataGridView
为PostBack
,您的DataGridView
也会被数据绑定。这样,无论您选择了什么,都会从回发的数据源重新填充if(!IsPostBack)
。
使用上面的代码,当您执行Checked
时,它会保留复选框的viewstate值,并获得正确的{{1}}状态。
答案 1 :(得分:0)
在复选框设计中添加以下属性
ToolTip =“&lt;%#Container.DataItemIndex + 1%&gt;”然后是后面的代码
for (int i = 0; i < gdview.Rows.Count; i++)
{
string labeldetail = "";
CheckBox cbox = (CheckBox)gdview.Rows[i].Cells[0].FindControl("CheckBox1");
if (cbox != null)
{
if (cbox.Checked == true)
{
int rowsNo = (Convert.ToInt16(city.ToolTip) - 1); //Convert.ToInt16(SrNo);
labeldetail = ((Label)gdview.Rows[rowsNo].FindControl("labelid")).Value;
}