Установлен флажок в gridview, в c # codebehind флажок свойство имеет значение false - PullRequest
0 голосов
/ 30 августа 2010

У меня есть пользовательский контроль загрузки.Элемент управления имеет вид сетки с загруженными документами, а в первом столбце есть флажок для выбора документов, которые я хочу удалить, нажав кнопку Удалить.Элемент управления загрузкой содержится в других пользовательских элементах управления практически везде в приложении и работает должным образом, за исключением одного элемента управления.Проблема заключается в том, что когда я проверяю какой-либо документ на удаление, когда код выполняет проверяемое свойство флажка имеет значение 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 голосов
/ 30 августа 2010

Не имея вашего кода DeleteFile (i), я не уверен, но предположу, что в этой функции вы удаляете / удаляете строку.Я прав?Если да, тогда он изменит индекс всех ваших строк, что заставляет вас думать, что он не проверяется, когда вы проверяете строку, которую вы помните, чтобы проверял.Вам нужно будет использовать цикл for в обратном направлении, чтобы это исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...