我有自定义上传控件。控件具有上传文档的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);
}
答案 0 :(得分:0)
没有你的DeleteFile(i)代码,我无法确定,但我会猜测你删除/删除该行的功能。我对吗?如果是,那么它会更改所有行的索引,这会让您认为在检查您记得要检查的行时不会检查它。您将不得不使用向后for循环来解决此问题。