我数据库中的表格存储了图片,文档,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();
在DB中,下一个属性:i_id(数字),i_objecttype_id(数字),s_code(nvarchar),s_name(nvarchar),m_content(blob),m_description(nvarchar)
在客户端上,我看到下一个:i_id(数字),i_objecttype_id(数字),s_code(nvarchar),s_name(nvarchar),m_description(nvarchar)。 没有属性m_content。
答案 0 :(得分:1)
看来你的问题“不完整”。那么如果blob是你希望图片显示的图片?如果blob是dll会发生什么?
在您的数据库中,M_CONTENT字段是一个blob,因此如果您将其数据绑定到GridView,则GridView无法知道该字段中的内容。
如果要显示图像以显示blob中文件的类型,则需要知道类型。您可以将类型存储在数据库中(Optimal),也可以在运行时解析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>
在您的情况下,type列名为I_OBJECTTYPE_ID。 GetImageUrl是代码隐藏中的一个函数:
switch (type)
{
case "video":
return "~//Images//video.png";
case "audio":
return "~//Images//audio.png";
}
return ""; // Something is wrong
使用此技术,您可以在ItemTemplate标记下创建超链接和其他内容。
答案 1 :(得分:0)
您可以在GridView的RowDataBound事件中获取这些值,并创建链接/超链接并将它们分配给行
protected void tableResults_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView row = e.Row.DataItem as DataRowView;
if (row != null)
{
Label lbImagePath = e.Row.FindControl("lbImagePath") as Label;
lbImagePath.Text = row["ImagePathColumn"].ToString();
}
}
}
在您的情况下,将Label更改为HyperLink控件并将其URL设置为列值
答案 2 :(得分:0)
如果您想让用户下载文件而不是显示(因为dll可以在浏览器上显示),请执行以下操作:
downloadfile.aspx
; datarowbound
事件中解析下载文件所需的值
喜欢文件类型,文件名等;假设您已将abc.pdf
保存为blob,则超链接网址应为downloadfile.aspx?fname=abc.pdf&type=application&pkey=uniqueidentification
; downloadfile.aspx
加载事件中,基于byte[]
(即主键)将blob作为uniqueidentification
获取。将其转换为流,然后像this question中一样回复。答案 3 :(得分:0)
要完成此操作,您必须使用 TemplateField 。您将向每个单元格插入控件并使用 Eval 函数绑定数据。有关详细信息,请参阅此link
答案 4 :(得分:0)
将网格按钮设置为每一行,然后使用选择或删除或更新按钮。
e.selectedindex。
你可以随时更改标题或隐藏标题。
你也可以使用像selectedindexchanged这样的事件,所以一旦你选择了你获得所选的索引id所以使用它可以调用方法
答案 5 :(得分:0)
这样做,在 TemplateField 中你有 EditTemplateField 和 ItemTemplateField ,在ItemTemplateField中放置你的列名Ex:Age:并在文本中绑定(“Age”)和在ItemTemplate中复制Everythinh从EditTemplate复制并将其粘贴,不要完全复制我的代码这是示例,我已将代码显示在表格中。所以现在你可以编辑HTML之类的所有内容,只需将链接作为href即可。
<asp:GridView ID="GridViewFemale" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="LinqDataSourceFemale" Width="158px">
<Columns>
<asp:ImageField DataImageUrlField="Image" NullImageUrl="images/INA.jpg" ShowHeader="False"></asp:ImageField>
<asp:TemplateField>
<EditItemTemplate>
<table>
<tr>
<td>
<b> Age:</b> <asp:Label ID="Label1" runat="server" Text='<%# Bind("Age") %>'></asp:Label><br />
<b> Name:</b> <asp:Label ID="Label2" runat="server" Text='<%# Bind("Name") %>'></asp:Label><br />
<b> Education:</b> <asp:Label ID="Label3" runat="server" Text='<%# Bind("Education") %>'></asp:Label><br />
<b> Current Status:</b> <asp:Label ID="Label4" runat="server" Text='<%# Bind("CurrentStatus") %>'></asp:Label><br />
<b> Height:</b> <asp:Label ID="Label5" runat="server" Text='<%# Bind("Height") %>'></asp:Label><br />
<b> Complexion:</b> <asp:Label ID="Label6" runat="server" Text='<%# Bind("Complexion") %>'></asp:Label><br />
<b> Caste:</b> <asp:Label ID="Label7" runat="server" Text='<%# Bind("Caste") %>'></asp:Label><br />
<b> Group:</b> <asp:Label ID="Label8" runat="server" Text='<%# Bind("Group") %>'></asp:Label>
</td>
</tr>
</table>
</EditItemTemplate >
<ItemTemplate>
<table id="GridTable">
<tr>
<td>
<b> Age:</b> <asp:Label ID="Label1" runat="server" Text='<%# Bind("Age") %>'></asp:Label><br />
<b> Name:</b> <asp:Label ID="Label2" runat="server" Text='<%# Bind("Name") %>'></asp:Label><br />
<b> Education:</b> <asp:Label ID="Label3" runat="server" Text='<%# Bind("Education") %>'></asp:Label><br />
<b> Current Status:</b> <asp:Label ID="Label4" runat="server" Text='<%# Bind("CurrentStatus") %>'></asp:Label><br />
<b> Height:</b> <asp:Label ID="Label5" runat="server" Text='<%# Bind("Height") %>'></asp:Label><br />
<b> Complexion:</b> <asp:Label ID="Label6" runat="server" Text='<%# Bind("Complexion") %>'></asp:Label><br />
<b> Caste:</b> <asp:Label ID="Label7" runat="server" Text='<%# Bind("Caste") %>'></asp:Label><br />
<b> Group:</b> <asp:Label ID="Label8" runat="server" Text='<%# Bind("Group") %>'></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>