【问题标题】:drop downlist value keep changing after selectedIndexChange下拉列表值在 selectedIndex 更改后不断变化
【发布时间】:2017-10-03 07:08:58
【问题描述】:

我有两个名为 dl_bankName,dl_branch 的下拉列表,一个名为 txt_bankCode.dl_bankName 的文本框将在 pageLoad 上填充,dl_branch 将在 dl_bankName 的 selectedIndexChange 上填充,而 txt_bankCode 将在 dl_branch 的 selectedIndexChange 上填充。 dl_bankName 已填充,即使在 postBack 后仍保留所选值,但当我们选择其他值时,dl_branch name 会更改为第一个值。

我的示例代码如下

HTML

<asp:DropDownList ID="dl_bankName" runat="server" Width="230px" 
Height="22px" AutoPostBack="True" onselectedindexchanged="dl_bankName_SelectedIndexChanged">    </asp:DropDownList>

<asp:DropDownList ID="dl_BranchName" Width="230px" Height="22px"  runat="server" 
                    onselectedindexchanged="dl_BranchName_SelectedIndexChanged" 
                    AutoPostBack="True"></asp:DropDownList>

<asp:TextBox ID="txt_IfscMicr" runat="server" CausesValidation="true"></asp:TextBox>
            <asp:RequiredFieldValidator ControlToValidate="txt_IfscMicr" runat="server" ID="RequiredFieldValidator9" ErrorMessage="*" Font-Size="Large" ForeColor="#FF5050" />

代码

protected void Page_Load(object sender, EventArgs e)
{                       
    if (!IsPostBack)
    {                               
        filldl_bankName();                  
    }            
}

protected void dl_bankName_SelectedIndexChanged(object sender, EventArgs e)
{               
    if (dl_BranchName.DataSource == null)
    {
        filldl_BranchName();  
    }                                            
    txt_IfscMicr.Text = "";             
}

protected void dl_BranchName_SelectedIndexChanged(object sender, EventArgs e)
{
    filltxt_IfscMicr();
}

 protected void filldl_bankName()
    {

                string query = "select '--Select--' as bank_name,'0' as bank_code from DUAL union all  select distinct(bank_name),bank_code from em_bank_details ";        
                dl_bankName.DataSource = GetDt(query);
                dl_bankName.DataTextField = "bank_name";
                dl_bankName.DataValueField = "bank_code";
                dl_bankName.DataBind();                                           
    }

    protected void filldl_BranchName()
    {           
            string query = "select '--Select--' as branch_name,'0' as bank_code from DUAL union all  select distinct(branch_name),bank_code from em_bank_details where bank_name='" + dl_bankName.SelectedItem.Text + "'";                
            dl_BranchName.DataSource = GetDt(query);
            dl_BranchName.DataTextField = "branch_name";
            dl_BranchName.DataValueField = "bank_code";
            dl_BranchName.DataBind();

    } 

    protected void filltxt_IfscMicr()
    {
          string query = "select distinct(branch_code),bank_code from em_bank_details where bank_name='" + dl_bankName.SelectedItem.Text + "' and branch_name='" + dl_BranchName.SelectedItem.Text + "'";     
            txt_IfscMicr.Text = GetDt(query).Rows[0]["branch_code"].ToString();                       
    }

【问题讨论】:

  • 尝试 javascript onchange 事件来调用你的函数
  • 先设置dl_BranchName.Enabled = false;再设置dl_BranchName.Enabled = true ;有什么意义?
  • @mmushtaq 我已经编辑了代码
  • @NasiruddinSaiyed 我的 JavaScript 不太好,但我会试一试并告诉你。

标签: c# asp.net dropdown


【解决方案1】:

我已经通过注释代码行解决了这个问题

 dl_BranchName.DataValueField = "bank_code";

在函数 filldl_BranchName() 中。所有 branch_namebank_code 都是相同的,也许这就是导致问题的原因。现在一切都按照我的要求工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多