【发布时间】:2012-01-05 14:56:13
【问题描述】:
我构建了一个DataTable 并用国家缩写和国家扩展填充它。我将此作为FormView 中DropDownList 控件的数据源。要查看此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