【问题标题】:DropDownList in .NET FormView loads perfectly the first time, never again.NET FormView 中的 DropDownList 第一次完美加载,再也不会
【发布时间】:2012-01-05 14:56:13
【问题描述】:

我构建了一个DataTable 并用国家缩写和国家扩展填充它。我将此作为FormViewDropDownList 控件的数据源。要查看此FormView,用户单击表单上的按钮。 DropDownList 总是在第一次时正确填充。处理完这个FormView(向数据存储添加一条记录)后,用户必须单击他之前单击的相同按钮来添加另一条记录,但DropDownList从不填充的。我已经确认每次调用都会填充提供此列表的 DataTable。当然,代码也是一模一样的。

表单代码如下:

<asp:DropDownList ID="lstBornIn" runat="server" />

代码隐藏如下:

  tblCountry = (DataTable) Session["tblCountry"];
DropDownList lstBorn = (DropDownList) 
FormView1.FindControl("lstBornIn");
lstBorn.DataSource = tblCountry;
lstBorn.DataValueField = "Abbrev";
lstBorn.DataTextField = "Country";
lstBorn.DataBind();

如前所述,这第一次完美运行,但再也不会了。这似乎是一个绑定问题,因为 Items 列表在后续调用时为空。

有什么建议吗?

【问题讨论】:

  • 何时将数据绑定到下拉列表?您可以发布按钮单击方法的完整方法吗?
  • 据我所知,不推荐将大对象存储在 Session 变量中。而且“tblCountry”似乎也不小。
  • 尽管如此,aleafonso,我在每次调用时都检查了 DataTable,它总是有 67 个项目(我将国家列表限制为 67 个)。
  • 我应该补充一点,根据 Internet 上的各种建议,我用 Hashtable 等机制代替了 DataTable 方案,但行为是相同的:第一次很好,随后出现的任何列表项都没有。

标签: c# asp.net drop-down-menu formview


【解决方案1】:

我放弃了这个,只想报告我为解决这个问题所做的其他工作。

一个想法是我看到的问题只发生在Visual Studio内部,所以我在IIS7上建立了相关文件,并在三个主要浏览器上进行了尝试。都失败了。

(对我而言)最令人难以置信的是,当我使用 VS 调试器查看其中一个列表时,它整齐地隐藏了所有 67 个项目。它只是不会显示它们。

我的解决方法很简单:在 ASPX 文件中对列表项进行硬编码。看起来很难看,但效果很好。

我会留意任何暗示不同方法的东西。

【讨论】:

    【解决方案2】:

    是否关闭了页面或 DropDownList 或 DDL 层次结构中的其他控件的 ViewState?如果是这样,您要么必须重新打开它,要么在回发时重新绑定。

    【讨论】:

    • 不,ViewState 没有关闭。上面提到的代码在每次实例化 FormView 时都会运行,并且此时确认填充了 DataTable。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2014-12-17
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多