【问题标题】:how to get dropdown selected index value without postback with button click如何通过单击按钮在不回发的情况下获取下拉选择的索引值
【发布时间】:2016-11-01 10:23:49
【问题描述】:

下面的代码; 代码不返回值空字符串

private void DisplayDplace()
    {
        BusinessLogicLayer.Businesslogiclayer objll = new BusinessLogicLayer.Businesslogiclayer();
    DataSet ds = objll.Binddname();
    drpfromplace.DataSource = ds;
    drpfromplace.DataTextField = "dname";
    drpfromplace.DataValueField = "did";
    drpfromplace.DataBind();
    drptoplace.DataSource = ds;
    drptoplace.DataTextField = "dname";
    drptoplace.DataValueField = "did";
    drptoplace.DataBind();
}

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

protected void Calendar1_SelectionChanged1(object sender, EventArgs e)
{
    TextBox1.Text = Calendar1.SelectedDate.ToShortDateString();
}

protected void Button1_Click(object sender, EventArgs e)
{
    Session["doj"] = TextBox1.Text;
    Session["noofseats"] = DropDownList6.SelectedItem.ToString();
    Session["fd"]= drpfromplace.SelectedItem.Value.ToString();
    Session["td"] = drptoplace.SelectedItem.Value.ToString();
}      

}

【问题讨论】:

    标签: sql asp.net button drop-down-menu click


    【解决方案1】:

    如果您想在不回发的情况下获得下拉列表的值,则必须使用 javascript/jquery 等客户端脚本。如果您想在后面的代码中获取值,则需要创建一个 ajax 调用。

    在后面的代码中创建一个 webmethod:

    [WebMethod]
            public static string MyWebMethod(string name )
            {
                /your logic goes here
                return ("Yeey");
            }
    

    现在在 aspx.cs 上创建一个 Ajax 调用:

    $('#mybutton').on('click',function(){
    
     $.ajax({
                type: "POST",
                url: "Default.aspx/MyWebMethod",
                data: JSON.stringify({ name: $('#drpname').val() }),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: true,
                success: function (data, status) {
                    alert("victory");
                },               
                failure: function (data) {
                    alert(data.d);
                },
                error: function (data) {
                    alert(data.d);
                }
            });
    
    });
    

    【讨论】:

    • @user7099076 你应该得到价值。您确定您没有将下拉菜单绑定到其他任何地方吗?或者在其他任何地方调用 DisplayDplace() 方法?
    【解决方案2】:

    您可以将ScriptManager 添加到页面并将代码包装在UpdatePanel 中。

       <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
    
                <asp:DropDownList ID="DropDownList1" runat="server">
                    <asp:ListItem Text="A" Value="a"></asp:ListItem>
                    <asp:ListItem Text="B" Value="b"></asp:ListItem>
                </asp:DropDownList>
                <br />
                <asp:Button ID="Button1" runat="server" Text="getValue" OnClick="Button1_Click" />
                <br />
                <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
    
            </ContentTemplate>
        </asp:UpdatePanel>
    

    后面的代码和往常一样工作。

        protected void Button1_Click(object sender, EventArgs e)
        {
            Label1.Text = DropDownList1.SelectedValue;
        }
    

    【讨论】:

    • 如果您在新页面上使用我的 sn-p 'as is' 会发生什么?什么不起作用?您在 Label1 中获得完整的 PostBack 或没有值?
    猜你喜欢
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 2021-02-08
    相关资源
    最近更新 更多