【问题标题】:DropDown List on web user control is empty after postback回发后 Web 用户控件上的下拉列表为空
【发布时间】:2019-10-24 00:37:33
【问题描述】:

Web 用户控件 (.ascx) 上有一个下拉列表。 我在页面后面的 aspx 代码上绑定 DropDown 列表控件。我已经尝试在 Load , PreLoad 事件中绑定它,但回发后它只是空的。我尝试了启用视图状态选项,但没有运气。

我在 web 用户控件中有一个绑定下拉列表的方法,我从使用这个 web 用户控件的主 aspx 代码中调用它。

.ascx

    public void FillDropDownList(string divisionCode, Int32 webEvevntID)
{
    DataSet dsDist = GetData(divisionCode, webEvevntID);
    ddlDist.DataSource = dsDist.Tables(0);
    ddlDist.DataTextField = "DistributorName";
    ddlDist.DataValueField = "DistNum";
    ddlDist.DataBind();
}

.aspx c#

private void Order_PreRender(object sender, EventArgs e)
{
    FillDropDownList();
}

【问题讨论】:

  • 你是否也在页面加载... if (!Page.IsPostBack) { FillDropDownList(...) } ?如果不是,您的重新绑定将再次从同一状态开始。
  • 我认为您需要在Page_Init 上加载控件。
  • Page_Init 仅在动态加载控件时才有帮助,以便可以将视图状态恢复到它。

标签: c# asp.net webusercontrol


【解决方案1】:

正如@AA所说,试试下面

.aspx c#

private void Order_PageLoad(object sender, EventArgs e)
{
  if(!IsPostBack())
    FillDropDownList();
 }

或者你可以试试这个:

.ascx

private void On_PageLoad(object sender, EventArgs e)
    {
      if(!IsPostBack())
        FillDropDownList();
     }

【讨论】:

    【解决方案2】:

    在用户控件的页面加载中执行此操作

    private void Order_PageLoad(object sender, EventArgs e)
    {
      if(!IsPostBack())
        FillDropDownList();
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 2020-03-17
      相关资源
      最近更新 更多