1
  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

4 回答 4

10

你需要检查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]
于 2012-10-11T05:44:00.883 回答
3
    <asp:DropDownList ID="ddlBanAcc" runat="server" DataTextField="" DataValueField="">
    </asp:DropDownList>

尝试在后端定义 DataTextField 和 DataValueField。这应该会有所帮助。

于 2012-10-11T04:50:30.610 回答
1

您需要添加AutoPostBack="true"到您DropDownList的才能将其发回。我想这就是代码没有执行的原因。

于 2012-10-11T04:52:55.000 回答
0

还有一个更令人惊讶的问题可能导致此问题!我的列表值来自数据库,这些值有换行符和回车符:“\r\n”。这些值看起来像一个无辜的空间,但实际上它们不是!我的解决方案是删除这些隐藏的 Char 值。希望能帮助到你。

于 2015-04-01T03:54:09.560 回答