Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# gridview中的Checked复选框,c代码中的Checked属性为false_C#_Ajax_Gridview_Checkbox - Fatal编程技术网

C# gridview中的Checked复选框,c代码中的Checked属性为false

C# gridview中的Checked复选框,c代码中的Checked属性为false,c#,ajax,gridview,checkbox,C#,Ajax,Gridview,Checkbox,我有自定义上传控制。控件的gridview包含上载的文档,第一列有复选框,用于通过单击“删除”按钮选择要删除的文档。upload控件包含在应用程序中几乎所有的其他UserControls中,除了一个控件外,它都可以正常工作。问题是当我检查某个文档以进行删除时,当代码执行复选框的checked属性为false时 <asp:GridView ID="gvFiles" runat="server" AutoGenerateColumns="false" ShowHeader="true"

我有自定义上传控制。控件的gridview包含上载的文档,第一列有复选框,用于通过单击“删除”按钮选择要删除的文档。upload控件包含在应用程序中几乎所有的其他UserControls中,除了一个控件外,它都可以正常工作。问题是当我检查某个文档以进行删除时,当代码执行复选框的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);
}

没有DeleteFilei代码,我不能确定,但我会猜测,在该函数中,您删除/删除了行。我说得对吗?如果是,那么它会更改所有行的索引,这会使您在检查记得已检查的行时认为它未被检查。您必须使用反向for循环来解决此问题。

检查您控制的页面上是否启用了viewstate。检查页面级别和控制级别。我认为有一个DataBind方法调用将选中状态重置为复选框,这就是问题所在。在使用数据绑定之前,应完成选中复选框的任何操作