使用C#将多个结果导入GridView单元格

时间:2015-01-21 21:07:59

标签: c# asp.net gridview

编写代码非常新,请温柔......

我有一个数据库,可以跟踪我在线发布的图像,图像中的人物,拍摄日期等等。然后我有一个基于我传入的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>

我的代表太新了,无法发布结果图片,但足以说我看到同一图片有多行,每个网址都有一行。

我希望将图片和其他数据视为一行,然后在网址列中显示图片所显示的所有网址。

2 个答案:

答案 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,您只需删除图像引用。