【问题标题】:Databound DropDownList default option always returns 0Databound DropDownList 默认选项始终返回 0
【发布时间】:2015-07-12 21:14:35
【问题描述】:

我正在创建一个表单来上传图片。我有一个由 SQL 数据库提供的下拉列表,其中包含用户可以将图像上传到的先前创建的专辑的名称和 ID。如果我在下拉列表中选择第二个或更低的选项,它总是返回正确的 ID,但如果我选择默认选项,它总是返回 0。

我觉得我在这里遗漏了一些明显的东西!

页面加载时:

    protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        if (Session["userId"] == null)
        {
            Response.Redirect("login.aspx");
        }
        else
        {
            BindDropDownList();
        }
    }

BindDropDownList 方法:

    string qry2 = "SELECT Id, albumName FROM albums WHERE albumOwnerId=@albOwnId";

    SqlCommand cmd2 = new SqlCommand(qry2, conn);

    cmd2.Parameters.AddWithValue("@albOwnId", Session["userId"]);

    SqlDataAdapter da2 = new SqlDataAdapter(cmd2);

    DataTable dt2 = new DataTable();

    da2.Fill(dt2);

    album.DataValueField = "Id";
    album.DataTextField = "albumName";

    album.DataSource = dt2;
    album.DataBind();

    album.SelectedItem.Value = dt2.Rows[0]["Id"].ToString();
    albumData = Int32.Parse(album.SelectedItem.Value);

    conn.Close();
}

选定的索引更改方法:

     protected void album_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList album = Page.FindControl("album") as DropDownList;

    albumData = Int32.Parse(album.SelectedItem.Value);
}

ASP.net:

<asp:DropDownList ID="album" runat="server" OnSelectedIndexChanged="album_SelectedIndexChanged">
    </asp:DropDownList><br />

【问题讨论】:

  • 如何将所选项目发送到服务器?有按钮吗?我问这个是因为我在下拉列表中没有看到 AutopPostback = "true" 并且我正在尝试重现问题
  • 感谢您的快速回复。单击上传按钮时会传递变量“albumData”。
  • 请看答案

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


【解决方案1】:

经过讨论,我认为问题在于您处理的是 OnSelectedIndexChanged 事件,而不是按钮的 OnClick 事件。

如果您不更改下拉列表的值,则不会引发 OnSelectedIndexChanged。

您应该处理按钮的 OnClick 事件:

<asp:Button ID="btn" runat="server" Text="Go" OnClick="btn_Click" />

protected void btn_Click(object sender, EventArgs e)
{
    DropDownList album = Page.FindControl("album") as DropDownList;

    albumData = Int32.Parse(album.SelectedItem.Value);
}

【讨论】:

  • 这非常有效,谢谢!我有一种感觉,这大致是我需要做的,但不明白如何实现它。我已经完全删除了我的 SelectedIndexChanged 方法,并在点击时将其添加到我的上传按钮中。再次感谢!
  • 好,我看到你还有一个问题待定,你还需要那里的答案吗?
  • 这是一项正在进行中的工作,我会看看进展如何:)。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2021-11-03
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2015-08-09
相关资源
最近更新 更多