我的问题与this question非常相似。我的页面上有一个下拉列表会导致回发,在此期间ImageUrl
的{{1}}属性会发生变化。发生回发时,将清除FileUpload中的任何值。这是我试图解决的问题,但我在这个过程中遇到了这个问题。
我正试图通过将下拉列表和图像包装在ASP:Image
中来解决问题。这是我的ASP标记:
UpdatePanel
编辑:执行更新的代码隐藏在这里:
<asp:UpdatePanel ID="upPanel" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="myDropdown"
EventName="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
<tr valign="top">
<td>Tag:</td>
<td>
<asp:DropDownList ID="myDropdown" runat="server"
AppendDataBoundItems="true" DataTextField="Name"
DataValueField="ID" AutoPostBack="true">
<asp:ListItem Value="" />
</asp:DropDownList>
</td>
</tr>
<TR vAlign="top">
<TD width="150">Thumbnail:</TD>
<TD>
<asp:Image id="imgThumbnail" Runat="server"
AlternateText="No Image Found"
Visible="false"></asp:Image><BR>
</TD>
</TR>
</ContentTemplate>
</asp:UpdatePanel>
我可以看到FireBug中发生了异步回发,但图片网址没有变化。我做错了什么?
答案 0 :(得分:0)
您错过了正在执行更新的代码(所选索引在下拉列表中更改的代码);但是,我打算猜测你的问题是由于你是通过控件加载DDL而不是以编程方式加载DDL。
您可能遇到此问题的原因是因为在填充数据源控件之前调用了页面加载函数,这意味着在您查找值时不会填充DDL,因此您的图像即将到来空白。
示例:
Dim sTemp As String = "images/myimagenumber" & myDropdown.SelectedIndex & ".jpg"
这将返回“images / myimagenumber.jpg”作为sTemp字符串的值,因为页面加载时没有选择任何值或索引。
我建议您手动(以编程方式)加载下拉列表的值,然后在page_load子例程中确保它仅在第一次加载页面时重新填充下拉列表。
VB.Net示例:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If Page.IsPostback = False Then
runDBLFillSubHere()
End If
'Run Rest of Code Here'
Sub
这些年来我遇到过这种情况,并且它总是因为在我访问DDL之前没有填充它。