在gridview中选中复选框,在check#属性后面的c#代码中为false

时间:2010-08-30 09:10:45

标签: c# ajax gridview checkbox

我有自定义上传控件。控件具有上传文档的gridview,第一列有复选框,用于通过单击“删除”按钮选择要删除的文档。除了一个控件外,上传控件几乎包含在应用程序的所有其他UserControl中并且工作正常。问题是当我检查某个文档是否有删除时,当代码执行时,复选框的checked属性为false。

<asp:GridView ID="gvFiles" runat="server" AutoGenerateColumns="false" ShowHeader="true"
    CssClass="DataGrid" Width="100%" OnRowDataBound="gvFiles_RowDataBound">
    <HeaderStyle HorizontalAlign="left" CssClass="UploadControlGridHeader" />
    <RowStyle CssClass="dlcell" />
    <EditRowStyle CssClass="dlsell" />
    <Columns>
        <asp:TemplateField HeaderText="Delete">
            <ItemStyle Width="8%" HorizontalAlign="Center" />
            <ItemTemplate>
                <asp:CheckBox ID="chkFile" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView> 

这是删除按钮事件

protected void btnDelete_Click(object sender, EventArgs e)
{
    for (int i = 0; i < gvFiles.Rows.Count; i++)
    {
        CheckBox chk = (CheckBox)gvFiles.Rows[i].Cells[0].FindControl("chkFile");
        if (chk.Checked)
        {
            // If file is marked/checked to be deleted
            // then delete it.
            DeleteFile(i);
        }
    }
    Session[KEY_VIEWSTATEFILES] = this.FileList;

    // Repopulate gridview
    BindToGridView();

    // Call command to keep same visible screen.
    CustomCommandEventArgs command = new CustomCommandEventArgs(COMMAND_FILE_DELETED, null);
    OnHappyCommand(command);
}

1 个答案:

答案 0 :(得分:0)

没有你的DeleteFile(i)代码,我无法确定,但我会猜测你删除/删除该行的功能。我对吗?如果是,那么它会更改所有行的索引,这会让您认为在检查您记得要检查的行时不会检查它。您将不得不使用向后for循环来解决此问题。