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

ページの読み込み時にドロップダウンをバインドし、IsPostBack プロパティを確認します

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