我的数据库中有一张表,存放了图片、文档、dll绳索等。我如何为用户实现这一切的映射? 我将这些数据绑定(bind)到一个数据表,并希望在每个单元格中都有超链接,当单击该超链接时,会调用/打开数据库中的相应项目。
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();
在 DB 下一个属性:i_id(number), i_objecttype_id(number), s_code(nvarchar), s_name(nvarchar), m_content(blob), m_description(nvarchar)
在客户端上,我看到下一个:i_id(number)、i_objecttype_id(number)、s_code(nvarchar)、s_name(nvarchar)、m_description(nvarchar)。 没有属性 m_content。
最佳答案
您的问题似乎“不完整”。那么,如果 blob 是一张图片,您希望显示图片吗?如果 blob 是一个 dll,会发生什么?
在您的数据库中,M_CONTENT 字段是一个 blob,因此如果您将其数据绑定(bind)到 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>
在您的例子中,类型列称为 I_OBJECTTYPE_ID。 GetImageUrl 是代码隐藏中的一个函数:
switch (type)
{
case "video":
return "~//Images//video.png";
case "audio":
return "~//Images//audio.png";
}
return ""; // Something is wrong
使用这种技术,您可以在 ItemTemplate 标记下创建超链接和其他内容。
关于c# - 如何在gridview中显示不同的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244255/