Событие OnCheckedChanged не срабатывает

У меня есть GridView со столбцом флажков (остальная часть GridView заполняется из базы данных). Я использую AJAX для выполнения различных функций, и мне интересно, не вызываю ли я событие OnCheckedChanged в нужном месте. Должен ли он быть завернут в какой-то UpdatePanel? Я все еще новичок в том, как все это работает... в основном, я стремлюсь изменить значение бита в моей базе данных, когда установлен флажок. Я знаю логику того, как это сделать, я просто не знаю, правильно ли я обращаюсь к моему событию OnCheckedChanged.

.CS

        protected void CheckBoxProcess_OnCheckedChanged(Object sender, EventArgs args)
    {
        CheckBox checkbox = (CheckBox)sender;
        GridViewRow row = (GridViewRow)checkbox.NamingContainer;
        OrderBrowser.Text += "CHANGED";
    }


    }

.aspx

<html xmlns="http://www.w3.org/1999/xhtml">

        <asp:DropDownList runat="server" ID="orderByList" AutoPostBack="true">
            <asp:ListItem Value="fName" Selected="True">First Name</asp:ListItem>
            <asp:ListItem Value="lName">Last Name</asp:ListItem>
            <asp:ListItem Value="state">State</asp:ListItem>
            <asp:ListItem Value="zip">Zip Code</asp:ListItem>
            <asp:ListItem Value="cwaSource">Source</asp:ListItem>
            <asp:ListItem Value="cwaJoined">Date Joined</asp:ListItem>
        </asp:DropDownList>
    </div>
    <div>
        <asp:Label runat="server" ID="searchLabel" Text="Search For: " />
        <asp:TextBox ID="searchTextBox" runat="server" Columns="30" />
        <asp:Button ID="searchButton" runat="server" Text="Search" />
    </div>
<div>
<asp:UpdatePanel ID = "up" runat="server">
<Triggers>
    <asp:AsyncPostBackTrigger ControlID = "orderByList"
    EventName="SelectedIndexChanged" />
     <asp:AsyncPostBackTrigger ControlId="searchButton" EventName="Click" />
</Triggers>

<ContentTemplate>
<div align="center">
    <asp:GridView ID="DefaultGrid" runat = "server" DataKeyNames = "fName"
    onselectedindexchanged = "DefaultGrid_SelectedIndexChanged"
    autogenerateselectbutton = "true" 
    selectedindex="0">
    <SelectedRowStyle BackColor="Azure"
    forecolor="Black"
    font-bold="true" />
    <Columns>
    <asp:TemplateField HeaderText="Processed">
                <ItemTemplate>
                    <asp:CheckBox ID="CheckBoxProcess" runat="server" Enabled="true" OnCheckedChanged = "CheckBoxProcess_OnCheckedChanged" />
                </ItemTemplate>
            </asp:TemplateField>

    </Columns>
    </asp:GridView>
    </div>
    <asp:TextBox ID="OrderBrowser" columns="100" Rows="14" runat="server" Wrap="false" TextMode="MultiLine" ReadOnly = "true">
    </asp:TextBox>
    </ContentTemplate>
    </asp:UpdatePanel>



</div>
</form>


person Hani Honey    schedule 06.07.2011    source источник


Ответы (2)


Попробуйте включить AutoPostBack для флажка.

<asp:CheckBox ID="CheckBoxProcess" runat="server" Enabled="true" OnCheckedChanged = "CheckBoxProcess_OnCheckedChanged" AutoPostBack="true" />

Это может быть причиной того, что ваш метод не вызывается.

person JConstantine    schedule 06.07.2011
comment
Когда я это делаю, чек появляется примерно на 2 секунды, а затем исчезает. Может ли это быть так, потому что я ничего не обрабатываю в базе данных? Я хочу, чтобы при наличии определенного значения в БД галочка либо появлялась, либо пропадала. Однако мой тестовый код не показывает, что метод вызывается... - person Hani Honey; 06.07.2011
comment
Возможно, стоит ввести какие-то фиктивные данные просто для проверки работоспособности. - person JConstantine; 06.07.2011
comment
Я тестировал его, и тест вообще ничего не показал :( - person Hani Honey; 06.07.2011

Пожалуйста, попробуйте проверить значение с БД:

Checked='<%# Convert.ToBoolean(Eval("Processed")) %>'

person Nmai    schedule 06.07.2012