我发现自己处境很奇怪。我正在使用包含gridview的更新面板来显示数据库结果。我在updatepanel中有一个带有一些过滤器的表单。用户应该能够应用所需的任何过滤器,然后使用“更新”按钮刷新结果。
正如我现在所拥有的,这将刷新整个页面。但是,如果我在下拉列表上设置了AutoPostBack="true"
,则情况会发生一些变化:
我对此行为感到非常困惑。这是我的模板代码的基础
<asp:UpdatePanel id="GridUpdatepanel" runat="server">
<ContentTemplate>
<form>
<div class="row">
<div class="col-md-8">
<h5 class="align-middle" >Filters</h5>
</div>
<div class="col-md-4">
<div class="pull-right">
<asp:button Text="Update" id="UpdateButton" OnClick="UpdateButton_Click" runat="server" CssClass="btn btn-primary btn-sm"/>
<asp:button Text="Reset" id="resetButton" OnClick="ResetButton_Click" runat="server" CssClass="btn btn-danger btn-sm"/>
</div>
</div>
</div>
<div class="row">
<div class="input-group input-group-sm col-md-4">
<asp:DropDownList runat="server" id="activeFilter" CssClass="form-control" AutoPostBack="false" >
<asp:ListItem selected="True" value="">-- Filter By Active/Inactive --</asp:ListItem>
<asp:ListItem value="NULL">Active</asp:ListItem>
<asp:ListItem value="NOT NULL">Inactive</asp:ListItem>
</asp:DropDownList>
</div>
<div class="input-group input-group-sm col-md-4">
<asp:TextBox id="jobIdFilter" CssClass="form-control" runat="server" placeholder="-- Filter By Job ID --" />
</div>
</div>
</form>
<asp:GridView>
<!-- display data in table etc -->
</asp:Gridview>
</ContentTemplate>
</asp:UpdatePanel>
public void UpdateButton_Click(Object sender, EventArgs e)
{
LoadGridView();
//LoadGridView() then takes the values from the form fields, modifies
//the SQL string and updates the table with the results
}
最后要注意的是,我必须将此代码在包装在容器中的三个不同页面上重复,并使用导航标签导航到。我不确定它们是否会相互干扰,但是第一个选项卡可以正常工作,而其他两个选项卡则不会。
感谢您提供的任何帮助。