如何在页面加载时在下拉列表中设置默认值- 在 asp.net c# 中?
How to set default values in dropdown list when the page is loaded- in asp.net c#?
我在 aspx 页面中创建了两个下拉列表
<div class="row-form">
<div class="span3">
Line of Authority <span class="RequiredField">* </span>:
</div>
<div class="span3">
<asp:DropDownList ID="drpLineOfAuthority" AutoPostBack="true" onselectedindexchanged="drpJurisdiction_SelectedIndexChanged" runat="server"></asp:DropDownList>
<!-- <tpLineOfAuthority:ctLineOfAuthority ID ="chkLineOfAuthority" runat="server" /> -->
</div>
<div class="clear">
</div>
</div>
<div class="row-form">
<div class="span3">
State <span class="RequiredField">* </span>:
</div>
<div class="span3">
<asp:DropDownList ID="drpJurisdiction" AutoPostBack="true" onselectedindexchanged="drpJurisdiction_SelectedIndexChanged" runat="server"></asp:DropDownList>
</div>
在aspx.cs文件中
protected override void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (urlAction != URLAction.update)
{
FillDropDown();
}
}
}
private void FillDropDown()
{
JurisdictionBL jbl;
jbl = new JurisdictionBL(0);
DataSet ds = new DataSet();
jbl.FetchAll(ds);
...
...
if (urlAction != URLAction.update)
{
drpJurisdiction.SelectedValue = "--Please select any state--";
drpLineOfAuthority.SelectedValue = "--Please select LOA--";
}
}
请注意,FillDropDown() 函数正在用值填充下拉列表项,这些值是从数据库中检索的。
现在的问题是上面的代码没有为下拉列表设置默认值!!!
请帮帮我!!!
尝试探索 AppendDataBoundItems
属性。
<asp:DropDownList ID="drpJurisdiction" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="--Please select any state--" Value="" />
</asp:DropDownList>
确保 AppendDataBoundItems
设置为 true,否则当您在后面的代码中绑定数据时它将被清除。
或者,
<asp:DropDownList runat="server" ID="drpJurisdiction" ondatabound="OndrpJurisdictionDataBound"></asp:DropDownList>
然后在你后面的代码中:
protected void OndrpJurisdictionDataBound(object sender, EventArgs e)
{
drpJurisdiction.Items.Insert(0, new ListItem("--Please select any state--", ""));
}
这是因为数据库中的列表不包含字符串“--Please select any state--”和“--Please select LOA--”,请确保您在源数据表中有默认值。
例如,如果数据表 DT 具有从数据库中检索到的值,您可以在运行时将默认值添加为新行
DataRow DR = DT.NewRow();
DR[0] = "--Please select LOA--";
DT.Rows.InsertAt(DR, 0);
像这样尝试,它会起作用
drpJurisdiction.Items.Insert(0, new ListItem("--Please select any state--", "0"));
我在 aspx 页面中创建了两个下拉列表
<div class="row-form">
<div class="span3">
Line of Authority <span class="RequiredField">* </span>:
</div>
<div class="span3">
<asp:DropDownList ID="drpLineOfAuthority" AutoPostBack="true" onselectedindexchanged="drpJurisdiction_SelectedIndexChanged" runat="server"></asp:DropDownList>
<!-- <tpLineOfAuthority:ctLineOfAuthority ID ="chkLineOfAuthority" runat="server" /> -->
</div>
<div class="clear">
</div>
</div>
<div class="row-form">
<div class="span3">
State <span class="RequiredField">* </span>:
</div>
<div class="span3">
<asp:DropDownList ID="drpJurisdiction" AutoPostBack="true" onselectedindexchanged="drpJurisdiction_SelectedIndexChanged" runat="server"></asp:DropDownList>
</div>
在aspx.cs文件中
protected override void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (urlAction != URLAction.update)
{
FillDropDown();
}
}
}
private void FillDropDown()
{
JurisdictionBL jbl;
jbl = new JurisdictionBL(0);
DataSet ds = new DataSet();
jbl.FetchAll(ds);
...
...
if (urlAction != URLAction.update)
{
drpJurisdiction.SelectedValue = "--Please select any state--";
drpLineOfAuthority.SelectedValue = "--Please select LOA--";
}
}
请注意,FillDropDown() 函数正在用值填充下拉列表项,这些值是从数据库中检索的。
现在的问题是上面的代码没有为下拉列表设置默认值!!!
请帮帮我!!!
尝试探索 AppendDataBoundItems
属性。
<asp:DropDownList ID="drpJurisdiction" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="--Please select any state--" Value="" />
</asp:DropDownList>
确保 AppendDataBoundItems
设置为 true,否则当您在后面的代码中绑定数据时它将被清除。
或者,
<asp:DropDownList runat="server" ID="drpJurisdiction" ondatabound="OndrpJurisdictionDataBound"></asp:DropDownList>
然后在你后面的代码中:
protected void OndrpJurisdictionDataBound(object sender, EventArgs e)
{
drpJurisdiction.Items.Insert(0, new ListItem("--Please select any state--", ""));
}
这是因为数据库中的列表不包含字符串“--Please select any state--”和“--Please select LOA--”,请确保您在源数据表中有默认值。
例如,如果数据表 DT 具有从数据库中检索到的值,您可以在运行时将默认值添加为新行
DataRow DR = DT.NewRow();
DR[0] = "--Please select LOA--";
DT.Rows.InsertAt(DR, 0);
像这样尝试,它会起作用
drpJurisdiction.Items.Insert(0, new ListItem("--Please select any state--", "0"));