Car*_*sen 0 c# sql asp.net html-select
我的DropDownList有问题.在阅读了很多帖子后,我仍然无法让它工作如此恶心.
这是我的C#代码:
protected void Page_Load(object sender, EventArgs e)
{
using (SqlConnection connection = new SqlConnection("Data Source=PCM13812;Initial Catalog=Newsletter;Integrated Security=True"))
{
connection.Open();
SqlCommand cmd = new SqlCommand();
cmd = new SqlCommand("Select Email From Newsletter", connection);
EmailList.DataSource = cmd.ExecuteReader();
EmailList.DataTextField = "Email";
EmailList.DataBind();
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void Vælg_Click(object sender, EventArgs e)
{
EmailListe .Text = EmailList.Text;
}
Run Code Online (Sandbox Code Playgroud)
这是我的Asp代码:
<asp:DropDownList ID="EmailList" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>
<asp:Button runat="server" ID="Vælg" Text="Vælg Email" OnClick="Vælg_Click" />
<asp:TextBox runat="server" ID="EmailListe" TextMode="MultiLine" />
<asp:TextBox ID="Besked" runat="server" />
Run Code Online (Sandbox Code Playgroud)
如您所见,我从SqlDatabase获取DropDownList值.当我在下拉列表中选择电子邮件并单击按钮时,它总是将第一个值添加到文本框中,即使我选择了另一个电子邮件.
我究竟做错了什么?
只记得ASP.NET的工作方式,在每个服务器往返的事件处理程序之前Page_Load调用,然后将列表刷新为默认值.检查一下它不是一个回发:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
return;
// Your code here
}
Run Code Online (Sandbox Code Playgroud)
编辑:一个小建议; 你不处置SqlCommand和SqlReader,你应该提取值,并尽快处理掉以释放资源.这样他们就会被GC收集,这可能是个大问题,特别是如果你的网站流量很大......