GridView中checkbox的问题
前台代码:
<asp:GridView ID="grdApprovalList" runat="server" Width="100%" CellPadding="4" ForeColor="#333333"
AllowSorting="true" AutoGenerateColumns="false" GridLines="None" Height="215px">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="选择">
<ItemTemplate>
<asp:CheckBox ID="CheckBox" runat="server"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Applicant" HeaderText="姓名" />
<asp:BoundField DataField="DepartmentCode" HeaderText="部门编号" />
<asp:BoundField DataField="GroupCode" HeaderText="小组编号" />
<asp:BoundField DataField="LeaveType" HeaderText="假别" />
<asp:BoundField DataField="PlanedStartTime" HeaderText="开始时间" />
<asp:BoundField DataField="PlanedEndTime" HeaderText="结束时间" />
<asp:BoundField DataField="Reason" HeaderText="休假事由" />
</Columns>
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
后台代码:
protected void btnAgree_Click(object sender, EventArgs e)
{
//grdApprovalList为页面上GridView的ID
for (int i = 0; i <= this.grdApprovalList.Rows.Count - 1; i++)
{
CheckBox cbox = (CheckBox)this.grdApprovalList.Rows[i].FindControl("CheckBox");
if (cbox.Checked == true)
{
//处理。。。。。。
}
}
}
问题:为什么无论页面中的checkbox是否选中后台代码中cbox.Checked永远等于false?
[解决办法]
后台的里面加个
if (!IsPostBack)
{}
[解决办法]
应该是上面说的那样
页面加载的时候pageload事件里面
你绑定gridview的代码要加在后台的里面加个
if (!IsPostBack)
{
绑定Gridview数据源
}
否则每次你点击按钮时都会重新为Gridview绑定数据