我正在使用jQuery FaceBox来显示文本框、下拉列表和按钮。用户可以在文本框中输入文本,在下拉列表中选择一个值,然后点击按钮。这会触发一些后端代码。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,即使在点击按钮之前我已经在文本框中写入了内容,并选择了另一个ddl项。ddl是这样加载的:
if (!Page.IsPostBack)
{
_favoritter = FavoritterFolderManager.GetFavoritterFolderByUser(UserID);
ddl_favoritter.DataSource = _favoritter;
ddl_favoritter.DataBind();
}
我尝试将这段代码放在 if (!Page.IsPostBack) 之外,并且使用 objectdatasource 填充它,但仍然存在相同的问题。当我点击按钮时,就好像控件被“重置”了一样,而且我认为这与 FaceBox 没有任何关系,因为它只是显示包含控件的 div… 可能也有可能是 FaceBox 的问题… 有什么想法吗?
这是 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>