【问题标题】:On Button click, dropdown loses its value单击按钮时,下拉列表失去其价值
【发布时间】:2014-08-20 14:17:37
【问题描述】:

我有两个下拉菜单。第一个是针对州的,第二个是针对城市的。当我选择州时,其各自的城市将在下一个下拉列表中填充。我有一个选项可以通过单击按钮上的文本框添加更多城市,同时从城市下拉列表中选择“其他”选项。

问题是,每当我从文本框中添加城市时,它都会被插入到相应的状态中,并且下拉列表也会失去其价值。我尝试调试,但找不到确切的问题。

请查看代码供您参考:

protected void btnAddDropDown_Click1(object sender, EventArgs e)
{
    using (SqlConnection con = new SqlConnection(constring))
    {
        con.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "Add_CityforLocation";
        cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = 0;
        cmd.Parameters.Add("@CountryName", SqlDbType.VarChar).Value = "India";
        cmd.Parameters.Add("@CityName", SqlDbType.VarChar).Value = txtOtherCity.Text.Trim();
        cmd.Parameters.Add("@StateName", SqlDbType.VarChar).Value = ddllocation1.SelectedItem.ToString();
        cmd.Connection = con;
        try
        {
            cmd.ExecuteNonQuery();
            BindContrydropdown();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);//You Can Haave Messagebox here
        }
        finally
        {
            con.Close();
        }
    }
}

protected void BindContrydropdown()
{
    //conenction path for database
    //string connection = WebConfigurationManager.ConnectionStrings["myconn"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constring))
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("Select Id,CityName From Career.Location", con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        ddllocation1.DataSource = ds;
        ddllocation1.DataTextField = "CityName";
        ddllocation1.DataValueField = "Id";
        ddllocation1.DataBind();
        ddllocation1.Items.Insert(0, new ListItem("--Select--", "0"));
        ddllocation1.Items.Insert(1, new ListItem("--OTHER--", "0"));
        con.Close();
    }
}

另外,请参阅相同的 HTML:-

 <tr>
        <td class="td">Location/State</td>
        <td>
            <asp:DropDownList CssClass="txtfld-popup" ID="ddllocation1" OnSelectedIndexChanged="ddllocation1_SelectedIndexChanged" runat="server" AutoPostBack="true"></asp:DropDownList>
            <asp:RequiredFieldValidator CssClass="error_msg" ID="RequiredFieldValidator1" ControlToValidate="ddllocation1" runat="server" ErrorMessage="Please enter location" InitialValue="--Select--" SetFocusOnError="true"></asp:RequiredFieldValidator>
        </td>
    </tr>
    <tr>
        <td class="td">Location/City</td>
        <td>
            <asp:DropDownList CssClass="txtfld-popup" ID="ddlLocation" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlLocation_SelectedIndexChanged"></asp:DropDownList>
            <asp:RequiredFieldValidator CssClass="error_msg" ID="reqLocation" ControlToValidate="ddlLocation" runat="server" ErrorMessage="Please enter location" InitialValue="--Select--" SetFocusOnError="true"></asp:RequiredFieldValidator>
        </td>
    </tr>
    <tr>
        <td>
            <asp:TextBox ID="txtOtherCity" runat="server" Visible="false" CssClass="txtfld-popup"></asp:TextBox>
            &nbsp;&nbsp;&nbsp;
                    <asp:Button ID="btnAddDropDown" runat="server" Width="63" Text="Add" CausesValidation="false" OnClick="btnAddDropDown_Click1" />
        </td>
    </tr>

【问题讨论】:

  • 您需要记住回发会清除值..

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


【解决方案1】:

试试这个

try
{

    if(!IsPostBack)
    {
        cmd.ExecuteNonQuery();
        BindContrydropdown();
    }

}

【讨论】:

  • 现在值没有被插入到 city 表中。为什么?
  • 其他。请参阅我的 js fiddle 供您参考jsfiddle.net/Lm7o1y9x。每当我将 BindContrydropdown() 添加到页面加载时,它都会给我“System.Data.DataRowView”不包含名为“StateName”的属性。此外,该值未插入 CityDropdown
  • 抱歉延迟回复。
  • 发生的事情是回发刷新值,尝试将其放在更新面板中,这样就不会导致完整的回发
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多