ddlBanAcc.Items.Insert(0, new ListItem("", ""));
string s = ddlBanAcc.SelectedValue;
string[] words = s.Split('|');
if (ddlBanAcc.SelectedIndex > 1)
{
query += "'and DtaLineAccountToDebit='" + words[0] + "'";
}
在ddlBankAcc(下拉列表选择)中,我填充了更新面板中的Datagrid
但是代码没有执行,并且此语句ddlBanAcc.SelectedValue;
编辑:HTML代码
<td align="left" valign="top">
</td>
<td>
Bank Account:
</td>
<td>
<asp:DropDownList runat="server" ID="ddlBanAcc" Width="160px" TaEvalex="3">
</asp:DropDownList>
</td>
编辑:我如何在ddlBanAcc中添加数据
DataTable dtbankaccount = oDBAccess.getDataTable("SELECT BkiAccountNb + ' | ' + BkiCurrency+ ' | ' +BkiAccountNb AS CONCATE From VwCieBankAcc");
ddlBanAcc.DataTextField = "CONCATE";
ddlBanAcc.DataSource = dtbankaccount;
ddlBanAcc.DataBind();
答案 0 :(得分:9)
您需要检查IsPostBack,如果它不是DataBind,因为这会使DropDownList重新获取所有值,并丢失选择。
if(!IsPostBack)
ddlBanAcc.DataBind();
特别是在DropDownList上保留他在ViewState上的值,你需要将IsPostBack用于填写的完整过程。最终的代码将是:
if(!IsPostBack)
{
DataTable dtbankaccount = oDBAccess.getDataTable("SELECT BkiAccountNb + ' | ' + BkiCurrency+ ' | ' +BkiAccountNb AS CONCATE From VwCieBankAcc");
ddlBanAcc.DataTextField = "CONCATE";
ddlBanAcc.DataSource = dtbankaccount;
ddlBanAcc.DataBind();
}
如果出于任何其他原因,您需要创建DataBind并在其选择后更改DropDownList的内容,您始终可以使用Request.Form
获取回发值:
Request.Form[DromDownListID.UniqueID]
答案 1 :(得分:3)
<asp:DropDownList ID="ddlBanAcc" runat="server" DataTextField="" DataValueField="">
</asp:DropDownList>
尝试在后端定义DataTextField和DataValueField。这应该有所帮助。
答案 2 :(得分:1)
您需要将AutoPostBack="true"
添加到DropDownList
以便回复。我认为这就是代码没有执行的原因。
答案 3 :(得分:0)
还有一个令人惊讶的问题可能导致这个问题!我的列表值来自数据库,值包含换行符和回车符:“\ r \ n”。这些价值看起来像一个无辜的空间,但实际上它们不是!我的解决方案是删除这些隐藏的Char值。希望它有所帮助。