如何在gridview中显示不同的对象?

Tle*_*pov 6 c# asp.net oracle gridview

我的数据库中的表已存储图片,文档,dll升降索等.如何为用户实现所有这些的映射?我将这些数据绑定到数据表,并希望在每个单元格中都有超链接,单击该链接时,将调用/打开数据库中的相应项目.

OracleCommand oracleCom = new OracleCommand();
oracleCom.Connection = oraConnect;
oracleCom.CommandText = "Select * From " + Session["tableNameIns"];
OracleDataAdapter adapter = new Oraenter code herecleDataAdapter();
DataTable tableD = new DataTable();
tableD.Locale = System.Globalization.CultureInfo.InvariantCulture;
adapter.SelectCommand = oracleCom;
adapter.Fill(tableD);
changeTableAtributs(tableD);
tableResults.DataSource = tableD.AsDataView();
tableResults.DataBind();
Run Code Online (Sandbox Code Playgroud)

在DB next atributes:i_id(number),i_objecttype_id(number),s_code(nvarchar),s_name(nvarchar),m_content(blob),m_description(nvarchar) dbview

在客户端上,我看到下一个:i_id(数字),i_objecttype_id(数字),s_code(nvarchar),s_name(nvarchar),m_description(nvarchar).没有属性m_content. clienview

Vik*_*tor 1

看来你的问题“不完整”。那么如果 blob 是一张图片,您希望显示该图片吗?如果 blob 是 dll 会发生什么?

在数据库中,M_CONTENT 字段是一个 blob,因此如果您将其数据绑定到 GridView,则 GridView 无法知道该字段中的内容。

如果您希望显示图像来显示 blob 中文件的类型,那么您需要知道该类型。要么将类型存储在数据库中(最佳),要么在运行时解析 blob 并找出文件类型。

在我看来,您已经拥有类型(I_OBJECTTYPE_ID)。如果是这种情况,那么您可以在 asp:GridView/Columns 下定义一个列

<asp:TemplateField HeaderText="File type">
    <ItemTemplate>
        <asp:Image runat="server" ID="mediaImage"
            ImageUrl='<%# GetImageUrl(Eval("type") as string) %>' />
    </ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

在您的情况下,类型列称为 I_OBJECTTYPE_ID。GetImageUrl 是代码隐藏中的函数:

switch (type)
{
    case "video":
        return "~//Images//video.png";
    case "audio":
        return "~//Images//audio.png";
}
return ""; // Something is wrong
Run Code Online (Sandbox Code Playgroud)

使用这种技术,您可以在 ItemTemplate 标记下创建超链接和其他内容。