我正在使用 jQuery FaceBox 来显示一个文本框、一个下拉列表和一个按钮。用户可以在文本框中写一个文本,在 ddl abd 中选择一个值点击按钮。这会触发代码隐藏中的一些代码。FaceBox 显示很好,里面的内容也还可以。此外,按钮事件被触发。这是按钮事件处理程序的代码:
protected void Button1_Click(object sender, EventArgs e)
{
_favorit = new Favoritter();
ListItem fav = ddl_favoritter.SelectedItem;
_favorit.FavoritterFolderID = int.Parse(fav.Value);
//_favorit.FavoritterFolderID = Convert.ToInt32(ddl_favoritter.SelectedItem);
_favorit.FavoritterNavn = txt_favoritNavn.Text;
_favorit.FavoritterUserID = UserID;
_favorit.FavoritterUrl = HttpContext.Current.Request.Url.ToString();
FavoritterManager.InsertFavoritter(_favorit);
}
创建一个业务对象,并使用从控件读取的值设置其属性。然后将该对象插入到数据库中,它工作得很好。问题是文本框和下拉值设置不正确。文本框的值为空,并且 ddl 选择的值始终为 1,即使我在文本框中写入,并在我点击按钮之前选择另一个 ddlitem。ddl 是这样加载的:
if (!Page.IsPostBack)
{
_favoritter = FavoritterFolderManager.GetFavoritterFolderByUser(UserID);
ddl_favoritter.DataSource = _favoritter;
ddl_favoritter.DataBind();
}
我尝试将此代码放在 if (!Page.IsPostBack) 之外,并使用 objectdatasource 填充它,仍然是同样的问题。就像我按下按钮时控件被“重置”一样,我认为它与 FaceBox 没有任何关系,因为它所做的只是显示包含控件的 div ......再说一次,它可能... 有任何想法吗?
这是aspx页面中的代码:
<div id="showme" style="display:none;">
Add to favourites.<br />
<br />
<p>
Title: <span><asp:TextBox ID="txt_favoritNavn" runat="server"></asp:TextBox></span></p>
<p>
select folder: <span><asp:DropDownList ID="ddl_favoritter" runat="server" DataTextField="FavoritterFolderNavn"
DataValueField="FavoritterFolderID" AppendDataBoundItems="true">
</asp:DropDownList>
</span>
</p>
<br />
<asp:Button ID="Button1" runat="server" Text="Gem" onclick="Button1_Click"/>
</div>