Databound DropDownList 默认选项总是 returns 0
Databound DropDownList default option always returns 0
我正在创建一个表单来上传图片。我有一个由 SQL 数据库提供的下拉列表,其中包含用户可以将图像上传到的先前创建的相册的名称和 ID。如果我 select 下拉列表中的第二个或更低的选项它总是 returns 正确的 ID,但是如果我保留默认选项 selected 它总是 returns 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 />
经过讨论,我认为问题是你处理的是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);
}
我正在创建一个表单来上传图片。我有一个由 SQL 数据库提供的下拉列表,其中包含用户可以将图像上传到的先前创建的相册的名称和 ID。如果我 select 下拉列表中的第二个或更低的选项它总是 returns 正确的 ID,但是如果我保留默认选项 selected 它总是 returns 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 />
经过讨论,我认为问题是你处理的是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);
}