【问题标题】:Fetch dropdownlist selected value upon click of a button单击按钮时获取下拉列表选定的值
【发布时间】:2013-03-12 19:48:42
【问题描述】:

在 ASP.net 表单上,我有一个按钮和一个下拉列表。 Dropdownlist 通过 LinqDatasource 填充。

我试图在单击按钮时获取选定的下拉列表值。

下拉列表从Northwind db的员工表中获取姓氏列表。

后面的代码就是这样获取ddl值为null的

aspx 页面

 <%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="Demo._Default" %>
<form id="form1" runat="server">
<asp:DropDownList ID="Ddl_allGoldsets" runat="server" 
    DataSourceID="LinqDataSource1" DataTextField="LastName" 
    DataValueField="LastName">
</asp:DropDownList>
<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="Demo.linqDataContext" EntityTypeName="" GroupBy="LastName" 
    OrderGroupsBy="key" Select="new (key as LastName, it as Employees)" 
    TableName="Employees">
</asp:LinqDataSource>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</form>

代码隐藏

namespace Demo
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            linqDataContext dc = new linqDataContext();
            DropDownList ddl = (DropDownList)Page.FindControl("Ddl_allGoldsets");
            string val = ddl.SelectedValue;

            /* code that writes val into db*/
        }
    }
}

以上代码将空值返回到ddl!!

【问题讨论】:

  • 你的 ddl 数据绑定是什么?删除该行,您的代码可能会工作。
  • 删除了 ddl.DataBind() 行,还是同样的错误!谢谢
  • 在您的回发中是否有任何数据绑定到您的 ddl?
  • 请张贴这些按钮和下拉列表的aspx。
  • 无数据绑定!我只是根据对 SO 的一些建议添加了数据库。 Dropdownlist 的数据源是 linqdatasource,它基本上获取字符串列表。下拉列表填充得非常好。

标签: asp.net drop-down-menu


【解决方案1】:

您根本不需要使用FindControl。您应该可以直接从代码隐藏中引用Ddl_allGoldsets

protected void Button1_Click(object sender, EventArgs e)
{
    DropDownList ddl = Ddl_allGoldsets;
    string val = ddl.SelectedValue;

    /* code that writes val into db*/
}

【讨论】:

    【解决方案2】:

    原因是您的下拉菜单不在 Page 控制之下。该窗体属于 Page 控件。您的下拉菜单将在表单控件下。

    结果

    DropDownList ddl = (DropDownList)Page.FindControl("nameofDropdownlist");
    

    直接在 aspx 的根目录下查找名为“nameofDropdownlist”的 ddl。但它在表单标签内。

    最好将 ddl 包装在 PlaceHolder 中,并在 PlaceHolder Id 上使用 FindControl。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      相关资源
      最近更新 更多