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
すべてが問題ないように見えますが、入力もありません。