编写代码非常新,请温柔......
我有一个数据库,可以跟踪我在线发布的图像,图像中的人物,拍摄日期等等。然后我有一个基于我传入的ID的ASPX页面,让我回到图像的网格视图,位置在线等。这有助于我跟踪我可能使用过单个图像的地方。
一切都很好,但我的网格视图中每个图片网址都有一行。我希望图像在我的页面上出现一次,然后其中一个单元格列出了URL。
这是我的C#:
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["db2257conn"].ConnectionString;
String strQuery = "select mFirstName, mDOB, cURL, fID, fURL, cDate from vwAllModelContent where " + Context.Request.QueryString["mID"] + " IN(mID1, mID2, mID3) and cactive = 1 order by cDate, fType, fName, cURL";
SqlCommand cmd = new SqlCommand(strQuery);
SqlConnection con = new SqlConnection(strConnString);
SqlDataAdapter sda = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
try
{
con.Open();
sda.SelectCommand = cmd;
sda.Fill(dt);
GridView2.DataSource = dt;
GridView2.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
con.Close();
sda.Dispose();
con.Dispose();
}
}
protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
{
}
这是ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="modelcontent2.aspx.cs" Inherits="modeldatabase.modelcontent2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form2" runat="server">
<div>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false" Font-Names="Arial" OnSelectedIndexChanged="GridView2_SelectedIndexChanged" >
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="fURL" DataTextField="furl" DataTextFormatString="<img src='{0}' width='200' border='0' />" Target="_blank" HeaderText="Image Link" Text="Image Link" />
<asp:BoundField DataField ="cDate" HeaderText ="Shoot Date" />
<asp:BoundField DataField ="mFirstName" HeaderText="Model First Name" />
<asp:BoundField DataField="mDOB" HeaderText="DOB" />
<asp:BoundField DataField="fID" HeaderText="File ID" />
<asp:HyperLinkField DataNavigateUrlFields="cURL" DataTextField="cURL" HeaderText ="URL" Target="_blank" Text="URL" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
我的代表太新了,无法发布结果图片,但足以说我看到同一图片有多行,每个网址都有一行。
我希望将图片和其他数据视为一行,然后在网址列中显示图片所显示的所有网址。
答案 0 :(得分:0)
可能不是很有效但是尝试一个子选择
String strQuery = "select mFirstName, mDOB, (SELECT cURL + ',' FROM vwAllModelContent where " + Context.Request.QueryString["mID"] + " IN (mID1, mID2, mID3)) , fID, fURL, cDate from vwAllModelContent where " + Context.Request.QueryString["mID"] + " IN(mID1, mID2, mID3) and cactive = 1 order by cDate, fType, fName, cURL LIMIT 1";
我不确定它是否有效,长时间没有使用sql
问题:为什么ID有三列? (mID1,mID2,mID3)
答案 1 :(得分:0)
您所定义的内容称为“1对多”关系。
Gridview旨在显示多行表格类型数据。如果要显示1个图像和多行关联数据,有几种方法可以实现此目的。
通常这需要2个数据库调用:
由于第一次调用实际上只提供img src
,因此您不需要数据绑定控件,只需获取字符串并将其放入<asp:Image />
控件或{{1} (如果您希望将图片作为链接)并设置 <asp:ImageButton />
属性
第二个调用是返回多行数据,使用现有的Gridview,您只需删除图像引用。