首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IsPostBack条件的影响是什么?

IsPostBack条件的影响是什么?
EN

Stack Overflow用户
提问于 2011-07-07 15:15:52
回答 6查看 783关注 0票数 2

我有一个aspx页面,在那里我使用AJAX。喜欢

代码语言:javascript
复制
<asp:UpdatePanel runat="server" ID="upPanelDDLProgram">
  <ContentTemplate>
    <asp:DropDownList ID="DDLProgram" runat="server" Width="194px" Height="18px" OnSelectedIndexChanged="OnDDLProgramChanged" AutoPostBack="true">
    </asp:DropDownList>
  </ContentTemplate>
</asp:UpdatePanel> 

我后面的代码是这样的

代码语言:javascript
复制
    protected void Page_Load(object sender, EventArgs e)
    {
        //if (!IsPostBack)
        //{
        //    BindProgramDDL();
        //}
        BindProgramDDL();
    }

    protected void BindProgramDDL()
    {
        List<CcProgramEntity> programEntities = FormSaleSubmit_BAO.GetAllPrograms();

        DDLProgram.DataSource = programEntities;
        DDLProgram.DataTextField = "Shortname";
        DDLProgram.DataValueField = "Id";
        DDLProgram.DataBind();
        string programCode = programEntities[DDLProgram.SelectedIndex].Code;
    }

    protected void OnDDLProgramChanged(object sender, EventArgs e)
    {
        List<CcProgramEntity> programEntities = FormSaleSubmit_BAO.GetAllPrograms();
        string programCode = programEntities[DDLProgram.SelectedIndex].Code;
    }

If条件是页面加载事件,被注释掉。如果我切换页面加载事件的注释部分,它在这两种情况下都能完美地工作。我的问题是,为什么会出现这种情况?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-07-07 15:21:40

如果我没弄错的话......

DropDown列表有数据,即使你在post back..........its 之后没有第二次绑定它,因为使用了它的服务器端控件,并且每个服务器端控件都有它的视图状态,这就是说它不会删除数据。

IsPostBack -当使用dropdown、checkbox、textbox............When等服务器端控件回发时,该属性为false,但在后续对相同页面的请求中,该属性的值为true。您可以查看msdn文档以了解有关它的更多细节。

票数 1
EN

Stack Overflow用户

发布于 2011-07-07 15:20:56

IsPostBack会告诉您这是否是对页面的第二次请求。这里的好处是,如果你需要做任何开销很大的事情,比如一个数据库调用来填充一个下拉列表或类似的东西,你可以在!IsPostback时做,然后使用ViewState来保留这些值。

具体来说就是你的情况

使用:

代码语言:javascript
复制
if (!IsPostBack)
{
    BindProgramDDL();
}

将导致仅在第一次加载页面时调用BindProgramDDL,所有AJAX或其他用户与页面的交互都不会调用BindProgramDDL;

否则,每次页面加载都会调用该方法,从而不必要地访问数据库中的记录。

票数 3
EN

Stack Overflow用户

发布于 2011-07-07 15:20:46

它基本上是说你是第一次访问这个页面(不是回帖),还是用户点击了一个控件(回帖)。

在最初加载页面时只想运行一次方法时非常有用

您的代码可能应该看起来像这样才能获得最佳结果

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindProgramDDL();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6607135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档