下拉列表没有选择值asp.net

时间:2012-10-11 04:43:12

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

  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">
                            &nbsp;</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();

4 个答案:

答案 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值。希望它有所帮助。