【发布时间】:2022-01-16 03:20:21
【问题描述】:
我通过调用存储过程将值/文本列表加载到 asp:dropdownlist 中。我在 !Page.IsPostBack 块内填充 PageLoad 方法的下拉列表,如下所示:
if (!Page.IsPostBack)
{
GetDropDownLists();
DataBind();
}
这是我的后端代码实现:
protected void GetDropDownLists()
{
DataTable dt = new DataTable();
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand("get_articletype", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dt);
xArticleTypeList.Items.Clear();
xArticleTypeList.Items.Insert(0, new ListItem("- Select.. -", "0"));
xArticleTypeList.SelectedIndex = 0;
xArticleTypeList.DataSource = dt;
xArticleTypeList.DataValueField = "TypeValue";
xArticleTypeList.DataTextField = "TypeName";
xArticleTypeList.DataBind();
}
如果我的代码不在 !Page.IsPostBack 块中,则在我单击保存按钮后,默认值将始终是下拉列表的第一项。但是,一旦我将代码放入 !Page.IsPostBack 块中,我的下拉列表就是空的。这里的参考是我的 asp:dropdownlist 的前端实现。
<asp:DropDownList ID="xArticleTypeList" EnableViewState="true" AutoPostBack="true" CssClass="form-control" runat="server" />
我知道还有其他主题涵盖了这个问题,但没有一个建议的解决方案对我有用。提前感谢您的投入。
【问题讨论】:
-
你真的需要
AutoPostBacktrue吗? -
我从某个模板复制/粘贴了我的行,这就是我拥有它的原因。即使去掉那部分也不能解决我的问题。
-
检查页面或母版页的视图状态未设置为 false
-
我已经检查过了,无论是母版页还是此代码所在的当前页都没有将视图状态设置为 false。
-
default value will always be the first item of the dropdownlist.和my dropdownlist is empty你在哪里检查这个?