问题描述
我有一个与此问题非常相似的问题。我的页面上有一个下拉列表会导致回发,在此期间会更改
ASP:Image
的ImageUrl
属性。发生该回发时,将清除FileUpload中的所有值。这就是我要解决的问题,但是我在此过程中遇到了这个问题。
我正试图通过将下拉列表和图片包装在ѭ2中来解决此问题。这是我的ASP标记:
<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>
编辑:我执行更新的代码在这里:
Private Sub myDropdown_SelectedIndexChanged(ByVal sender As Object,ByVal e As EventArgs) Handles myDropdown.SelectedIndexChanged
If (myDropdown.SelectedValue <> \"-1\") Then
imgThumbnail.ImageUrl = Application(\"AppPath\") + \"/Modules/Broadcaster/ImageGen.ashx?tag=\" + myDropdown.SelectedValue
Else
imgThumbnail.ImageUrl = Application(\"AppPath\") + \"/Modules/Broadcaster/ImageGen.ashx?defaultTag=\" + _modID.ToString()
End If
End Sub
我可以看到FireBug中发生了异步回发,但是图像URL并没有改变。我究竟做错了什么?
解决方法
您缺少进行更新的代码(由所选索引调用的代码在下拉列表中更改);但是,我将大胆猜测是由于您通过控件而不是通过编程方式加载DDL而引起的问题。
您可能会遇到此问题的原因是,在填充数据源控件之前调用了页面加载函数,这意味着在您寻找值时未填充DDL,因此图像出现了错误。空白。
例:
Dim sTemp As String = \"images/myimagenumber\" & myDropdown.SelectedIndex & \".jpg\"
这将返回\“ images / myimagenumber.jpg \”作为sTemp字符串的值,因为在页面加载时未选择任何值或索引。
建议您手动(以编程方式)加载dropdownlist的值,然后在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之前未填充DDL。