You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从GridView/SqlDataSource将image1绑定至ASPxImage控件?

解决方案:绑定二进制image1字段到ASPxImage控件

你的核心问题有两个:一是ASPxPopupControl内的ASPxImage不在数据绑定容器中,直接使用Eval("image1")无效;二是image1为二进制存储的图片,无法直接作为ImageUrl的值。以下提供两种可行方案:


方案一:替换为ASPxBinaryImage控件(适配二进制字段)

DevExpress的ASPxBinaryImage控件原生支持二进制图片绑定,是最适配的方案:

  1. 修改Popup内的控件为ASPxBinaryImage:
<dx:ASPxPopupControl ID="popup" runat="server"
    ClientInstanceName="popup"
    Modal="true" HeaderText="Büyütülmüş CRQS Fotoğrafları" PopupHorizontalAlign="WindowCenter" PopupVerticalAlign="Middle"
    OnCallback="popup_Callback">
    <ContentCollection>
        <dx:PopupControlContentControl>
            <dx:ASPxBinaryImage ID="img" runat="server" Value='<%# Eval("image1") %>' 
                ImageHeight="500px" ImageWidth="500px">
            </dx:ASPxBinaryImage>
        </dx:PopupControlContentControl>
    </ContentCollection>
</dx:ASPxPopupControl>
  1. 配置GridView行点击的前端回调:
<dx:ASPxGridView ID="PhotoGrid" DataSourceID="PhotoDataSource" KeyFieldName="id" Width="100%" runat="server" Visible="false" >
    <ClientSideEvents RowClick="function(s, e) {
        s.GetRowValues(e.visibleIndex, 'id', function(id) {
            popup.PerformCallback(id);
        });
    }" />
    <!-- 列代码保持不变 -->
</dx:ASPxGridView>
  1. 后台实现Popup的回调逻辑(C#示例):
protected void popup_Callback(object sender, DevExpress.Web.CallbackEventArgsBase e)
{
    int rowId = Convert.ToInt32(e.Parameter);
    // 设置数据源参数,获取对应行的图片数据
    PhotoDataSource.SelectParameters["id"].DefaultValue = rowId.ToString();
    // 绑定图片控件
    img.DataBind();
    // 显示弹窗
    popup.Show();
}

方案二:将二进制图片转为Base64绑定到ASPxImage

如果坚持使用ASPxImage控件,可把二进制数据转为Base64格式的DataUrl:

  1. 后台添加转换方法:
public string ConvertImageToBase64(byte[] imageData)
{
    if (imageData == null || imageData.Length == 0)
        return string.Empty;
    // 根据实际图片格式调整(如png、gif)
    return "data:image/jpeg;base64," + Convert.ToBase64String(imageData);
}
  1. 修改ASPxImage的绑定表达式:
<dx:ASPxImage ID="img" runat="server" ImageUrl='<%# ConvertImageToBase64((byte[])Eval("image1")) %>'></dx:ASPxImage>
  1. 同样需要在GridView行点击时,通过回调触发弹窗控件的DataBind(),逻辑同方案一的回调代码。

关键注意事项

  • 确保PhotoDataSource的SelectCommand能根据id正确获取image1字段数据。
  • 大量图片场景下,Base64格式会增加页面体积,优先选择ASPxBinaryImage方案。
  • 弹窗显示前必须执行控件的DataBind(),否则绑定不会生效。

内容的提问来源于stack exchange,提问作者M.Eren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:52:01