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

vin*_*ini 1 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] + "'";
  }
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

编辑:我如何在ddlBanAcc中添加数据

DataTable dtbankaccount = oDBAccess.getDataTable("SELECT BkiAccountNb + ' | ' + BkiCurrency+ ' | ' +BkiAccountNb AS CONCATE  From VwCieBankAcc");
    ddlBanAcc.DataTextField = "CONCATE";
    ddlBanAcc.DataSource = dtbankaccount;

    ddlBanAcc.DataBind();
Run Code Online (Sandbox Code Playgroud)

Ari*_*tos 9

您需要检查IsPostBack,如果它不是DataBind,因为这会使DropDownList重新获取所有值,并丢失选择.

if(!IsPostBack)
    ddlBanAcc.DataBind();
Run Code Online (Sandbox Code Playgroud)

特别是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();
}
Run Code Online (Sandbox Code Playgroud)

如果由于任何其他原因,您需要创建DataBind并更改DropDownList的内容,即使在他的选择之后,您仍然可以使用Request.Formas 来获取回发值:

Request.Form[DromDownListID.UniqueID]
Run Code Online (Sandbox Code Playgroud)