我有一个带有一列复选框的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>
尝试为复选框控件打开AutoPostBack。
<asp:CheckBox ID="CheckBoxProcess" runat="server" Enabled="true" OnCheckedChanged = "CheckBoxProcess_OnCheckedChanged" AutoPostBack="true" />
这可能是未调用您的方法的原因。