【问题标题】:ASP.net web page update issue ( Postback?)ASP.net 网页更新问题(回发?)
【发布时间】:2015-07-14 10:24:06
【问题描述】:

今天大家好。

希望你一切都好。我需要你的帮助来解决一个简单的问题(我是 C# + ASP.net 的新手)。

我创建了一个 ASp.net 门户。当用户打开该门户(网页)时。该网页为他提供了他是其成员的组列表以及他可以添加到自己的组列表..

它还包含两个下拉菜单。一个包含组列表,其使用可以添加到自己。第二个包含用户所属的组列表,他可以将其从这些组中删除。

添加和删除代码工作正常。但我必须手动刷新页面才能显示更新的信息。单击“添加或删除按钮”页面后没有刷新更新的信息。

我尝试使用Response.Redirect("Success.aspx")重定向到主page

但没有任何效果,

protected void Page_Load(object sender, EventArgs e)
{
    string uN = "domain\\michael.jackson";
    //SystemResources sr = new SystemResources();
    //ActiveUser usr = sr.GetUserDetails(uN).FirstOrDefault();

    LabelUserName.Text = "michael.jackson";

    // Getting the list of groups using of praticular OU the classOrgUnitGroup

    string sdomain = ClassGroupPortalSettings.getDomainName();
    string sInterstOU = "OU=testing,DC=analysys,DC=com";
    classOrgUnitGroup a = new classOrgUnitGroup();
    List<string> allGroups = a.GetGroupFromOu(sdomain, sInterstOU);
    string grouplist = "<ul>";
    foreach (string group in allGroups)
    {
        grouplist = grouplist + "<li><a href='showgroupmembers.aspx?group=" + group + "'>" + group + "</a></li>";

    }

    grouplist = grouplist + "</ul>";
    lblOpenGroups.Text = grouplist;

    //// 4. Finding users group membership.
    string sDomain = ClassGroupPortalSettings.getDomainName();
    classUserGroupMembership myMembership = new classUserGroupMembership();
    List<string> myGroupsMem = myMembership.getMyGroupMembership(sDomain, "domain\\michael.jackson");

    string glList = "<ul>";
    string openlList = "<ul>";
    string otherGroup = "<ul>";
    foreach (string grp in myGroupsMem)
    {
        //BulletedListMyGroups.Items.Add(grp);

        glList = glList + "<li>" + grp + "</li>";
        if (allGroups.Contains(grp))
        {
            DropDownListMyGroups.Items.Add(grp);
            openlList = openlList + "<li>" + grp + "</li>";
        }
        else 
        {
            otherGroup = otherGroup + "<li>" + grp + "</li>";
        }
    }

    glList = glList + "</ul>";
    openlList = openlList + "</ul>";
    otherGroup = otherGroup + "</ul>";
    LabelOtherGrp.Text = otherGroup;
    LabelOpenGrp.Text = openlList;

    // LabelMyGroup.Text = glList;

    foreach (string emailGroup in allGroups)
    {
        if (!myGroupsMem.Contains(emailGroup))
        {
            DropDownListOpenGroups.Items.Add(emailGroup);
        }
    }

}

这是在页面重新加载时运行的代码。

问题是:当我单击删除按钮或添加按钮时,它会运行代码以从所选组中添加或删除用户。单击按钮后页面重新加载时。组成员身份标签。并且下拉框没有用代码更新:(

【问题讨论】:

  • 你能展示你的代码你是如何添加或删除的吗?
  • 你能展示你的代码你是如何添加或删除的吗?
  • 让你的问题更清楚。指定代码/您如何提交数据。
  • 在回发时(在相应的点击事件中)重新获取数据并显示。当您单击刷新时,正在重新加载并再次获取页面
  • 您是否检查过您在回发时是否掌握了正确的数据??

标签: c# asp.net


【解决方案1】:

我假设您的情况是这样的,您有两个下拉菜单。一个是满的记录,可以选择项目。选择项目后,用户将提交按钮,然后记录将保存到数据库/xml。稍后您将从 db/xml 中检索项目并在第二个下拉菜单中显示该项目。

现在你的问题是点击提交按钮后第二个下拉菜单中没有显示记录,

如果是这样,您有两个选择。

1) 您可以在将制作的内容插入数据库后立即提取您的记录。 2)您可以在页面加载本身中提取您的记录,如下所述,

If(Postback) // Or If(PostBack == true)
{
  // Pull your records and display in Drop down.
}

【讨论】:

  • 嗨 gKrishy,我已经尝试过了,但这对我不起作用:(,
  • 补充一点,当我使用 VS2013 (F5) 在本地运行此页面时,它按预期工作,但是当我发布它时,它开始导致此问题。
  • @gkrishy,问题是,我有一个网页,当用户打开它时,它显示组列表,他是其中的成员,然后有两个下拉列表。第一个下拉列表显示了他所有的组成员列表和一个删除它的按钮,第二个下拉列表显示了各种组列表,用户可以使用添加按钮将其添加到自己。现在的问题是,每当用户添加或删除他自己时,主页都会使用更新信息进行更新,直到我们手动刷新它。 :(
  • @AmanDhally 考虑一下我的组列表中有“歌手”,我想将“好莱坞”添加到我的列表中。为此,我需要从第二个下拉菜单中选择好莱坞,稍后我需要单击添加按钮。现在你的问题,在点击添加按钮后,好莱坞没有添加到我的组列表中(第一个下拉列表)?
  • @gkrishy 是的,这就是问题所在 :( 。但现在已经解决了,非常感谢您的时间和帮助。
【解决方案2】:

这只是导致 IMO 混乱的事件顺序。首先调用 Page_Load,然后控制事件(单击、更改等)。所以在添加/删除时,您需要重新绑定项目。

https://msdn.microsoft.com/en-gb/library/ms178472%28v=vs.100%29.aspx

将数据绑定逻辑移出函数并在点击事件结束时调用函数。然后您可以在页面加载中重用该函数,并将逻辑仅绑定到页面加载而不是回发,因为您可能会在页面加载中不必要地重新绑定。

protected void Page_Load(object sender, EventArgs args)
    {
      if(!IsPostBack)
    {
       DataBindLogic();
    }
    }

    private void DataBindLogic()
    {
      /*Put databind code here */
    }

    protected void RemoveBtn_Click(Object sender,Eventargs args)
    {
      /*Do db update */
      DataBindLogic();
    }

【讨论】:

  • 嗨 Rohit ,我已经尝试了上述解决方案,结果是一样的 :( 。它仍然没有更新页面 :*(
  • 补充一点,当我使用 VS2013 (F5) 在本地运行此页面时,它按预期工作,但是当我发布它时,它开始导致此问题。
【解决方案3】:

非常感谢大家和你们每个人的时间、帮助和精力,非常感谢。

问题已解决,我在 Postback 中添加了另一行代码,用于检查用户的操作。

例如,如果使用从组中删除,

  • 然后获取组的名称并使用动作 REMOVE
  • 然后更新下拉框和当前成员框。

我也为添加组做了同样的事情,它为我解决了这个问题。

再次感谢,祝您有美好的一天。

问候和最良好的祝愿 阿曼

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多