所以,我这里有一个表单设计部分,其中有一个“保存”按钮和一个“插槽网格”按钮。 AsyncPostBackTrigger在“更新”面板的“保存”按钮上实现。我的问题是,在列表框中选择了在页面加载时绑定的值后,每当我点击“btnshowslotgrids”按钮时,列表框将丢失所有选定的值。我应该怎么做才能防止它?
<asp:UpdatePanel ID="Upd" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<table style="width: 100%; margin: auto; min-height: 500px;">
<tr>
<td>
<asp:ListBox SelectionMode="Multiple" ClientIDMode="Static"
ID="lbEduType" runat="server"
CssClass="multiselect form-control" DataValueField="Id"
DataTextField="Name" multiple="multiple"></asp:ListBox>
</td>
<td>
<asp:Button ID="btnshowslotgrids" Text="Slot Grids" runat="server"
CssClass="btn btn-primary" OnClick="btnshowslotgrids_Click"/>
</td>
</tr>
</table>
<table id="tblAssSubjSave" runat="server">
<tr>
<td>
<asp:Button runat="server" ID="btnSaveAssessment" Text="Save Slot"
ValidationGroup="vgAssessments" OnClick="btnSaveAssessment_Click" />
<asp:Button runat="server" ID="btnCancelAssessment" Text="Reset"
CausesValidation="false" OnClick="btnCancelAssessment_Click" />
</td>
</tr>
</table>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSaveAssessment" />
</Triggers>
</asp:UpdatePanel>
您应该在!IsPostback事件中绑定您的列表框。
if (!IsPostBack)
{
//bind your listbox here
}
在您的情况下发生什么,每当您点击按钮时,首先它将调用页面加载事件,它将重新绑定您的列表框源,因此您选择的值将丢失。
您可以将值存储在隐藏字段中,然后在页面回发后重新填充列表框。