【问题标题】:.NET checkbox.Checked always return false.NET checkbox.Checked 总是返回 false
【发布时间】:2012-11-28 22:33:45
【问题描述】:

我是 .NET 的新手,我的复选框有问题。即使它们被选中,它们都返回 false。这是我的asp代码

   <asp:GridView ID="gvGeneros1" runat="server" class="divTable" 
        AutoGenerateColumns="False" DataKeyNames="idgenero" CssClass="table">
        <Columns>
            <asp:BoundField DataField="nome" HeaderText="Gênero" SortExpression="nome" >
            <ControlStyle Width="200px" />
            <ItemStyle Width="200px" />
            </asp:BoundField>
            <asp:TemplateField AccessibleHeaderText="Check">
                <ItemTemplate>
                    <asp:CheckBox ID="checkGenero" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

这是我的 C# 代码

DataSet dsDivided;

protected void Page_Load(object sender, EventArgs e)
{
    Music musicbll = new Music();
    DataSet dsGeneros = musicbll.getGenders();

    int size = dsGeneros.Tables[0].Rows.Count;
     dsDivided = null;

        // Divide in two DataTable
        dsDivided = Tools.SplitDataTableInTwo((DataTable)dsGeneros.Tables[0], size / 2);

    gvGeneros1.DataSource = dsDivided.Tables["FirstSet"];
    gvGeneros1.DataBind();

    for (int i = 0; i < gvGeneros1.Rows.Count; i++)
    {
        ((CheckBox)gvGeneros1.Rows[i].Cells[1].Controls[1]).Checked=false;
    }

}


protected void btGravarPrefs_Click(object sender, EventArgs e)
{
    DataTable dt = new DataTable("generos");
    dt.Columns.Add("idgenero", typeof(int));
    dt.Columns.Add("active", typeof(bool));

    for (int i = 0; i < gvGeneros1.Rows.Count; i++)
    {
        int idCliente = (int)dsDivided.Tables[0].Rows[i][0];
         bool check = ((CheckBox)gvGeneros1.Rows[i].Cells[1].Controls[1]).Checked; //always false
        dt.Rows.Add(new object[] { idCliente, check});
    }
}

}

我不知道该尝试更多,我搜索了所有内容,它似乎是正确的。谢谢

【问题讨论】:

  • 当您的页面加载时,您设置Checked 值。您是否确认选中 CheckBox 时不会发生此事件?

标签: c# .net checkbox checked


【解决方案1】:

我认为你应该用if (!Page.IsPostBack) 包裹你的Data binding

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    { 
       //Bind your datasource here
    }
}

【讨论】:

  • 它就像一个魅力。回复非常快,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多