0

我是 ASP.NET 新手,在获取静态 DropDownList 中的选定项目时遇到问题。这是我列表的结构:

                   <asp:DropDownList ID="txtGender" runat="server">
                            <asp:ListItem>Male</asp:ListItem>

                            <asp:ListItem>Female</asp:ListItem>

                            <asp:ListItem>Other</asp:ListItem>

                            <asp:ListItem>Rather not say</asp:ListItem>
                    </asp:DropDownList>

然后在我想要获取所选项目的代码中,我使用txtGender.SelectedItem并始终将第一项作为输入。我有另一个 DropDownList ,我必须从数据库中获取项目,然后我IsPostBack在调用之前使用DataBind()它,它工作正常。所以我想知道我应该如何IsPostBack在上面的静态 DropDownList 中使用?请帮忙。

*已编辑

以下是我使用的方法txtGender

protected void btnSave_Click(object sender, EventArgs e)
{
    int uID= int.Parse(Session["uID"].ToString());
    PhotoDataSetTableAdapters.MembersTableAdapter memAdap = new PhotoDataSetTableAdapters.MembersTableAdapter();
    PhotoDataSet.MembersDataTable memTable = memAdap.GetMemberByID(uID);

    DataRow[] dr = memTable.Select("userID = " + uID);
    string Fname = memTable.AsEnumerable().Single().Field<String>("avatar");
    if(PhotoUploader.HasFile)
    {
       Fname = Path.GetFileName(PhotoUploader.FileName);
       PhotoUploader.SaveAs(Server.MapPath("~/avatar/") + Fname);
    }

    string newPass = memTable.AsEnumerable().Single().Field<String>("password");
    if (txtPass.Text != "")
    {
        newPass = txtPass.Text;
    }

    string tmp = txtBday.Text;
    DateTime bday = DateTime.ParseExact(tmp, "dd/MM/yyyy", null);

    memAdap.UpdateMemberProfile(newPass, txtEmail.Text, txtRealname.Text, txtLocation.Text, txtGender.SelectedItem.Text, txtBio.Text, bday, Fname, uID);
    //Response.Write(txtGender.SelectedItem.Text + " " + txtBio.Text);
    Response.Redirect("Photostream.aspx");
}

Ps:我尝试使用Response.Write来查看性别的输入,但它始终是要选择的列表的第一项。txtBio即使一切看起来都很好,我也没有任何意见。

4

3 回答 3

1

如果您没有重新绑定下拉列表的选项,并且您没有在回发时重置其实际值,则您不必对IsPostBack. 您应该能够执行以下操作来获取值和文本:

string value = txtGender.SelectedValue;
string text = txtGender.SelectedItem.Text;

注意:控件的实际值在 Page_Init 期间将不可用,因为页面尚未完全初始化。

于 2012-06-07T03:03:51.220 回答
0

您需要为 DropDownList 中的 ListItems 分配唯一值:

<asp:DropDownList ID="txtGender" runat="server">
      <asp:ListItem Value="0">Male</asp:ListItem>

      <asp:ListItem Value="1">Female</asp:ListItem>

      <asp:ListItem Value="2">Other</asp:ListItem>

      <asp:ListItem Value="3">Rather not say</asp:ListItem>
</asp:DropDownList>

试试这个,看看它是否有帮助。

于 2014-02-19T17:44:33.543 回答
-1

Bind the dropdown on page load and check the IsPostBack property

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
    {
        // Dropdown binding code goes here....   
    }
 }
于 2012-06-07T04:14:46.923 回答