使用中继器无法显示已联接的SQL Server表

斯维格

成员
已加入
2016年10月4日
留言内容
6
编程经验
1-3
嗨,这是我的要求:

  • 我需要创建一个显示不同本地组(足球,高尔夫等)的Web表单页面。
  • 每个小组需要展示一些相册
  • 每个相册可以包含许多图像

目前,我可以创建相册,并将图像添加到每个相册中。

但是,我在尝试正确显示相册时遇到麻烦。

这是我的SQL Server表:

片段1.PNGsnip2.PNG片段3.PNG片段4.PNG

这是我当前的代码:

<asp:Repeater ID="repGroupPhotoGallery" runat="server" OnItemDataBound="repGroupPhotoGallery_ItemDataBound">
                            <ItemTemplate>
                                <div class="col-md-3">
                                    <div class="panel panel-default">
                                        <div class="panel-heading">
                                            <h3 class="panel-title">
                                                <%# Eval("Group_Name") %>
                                            </h3>
                                        </div>
                                        <!--panel-heading-->
                                        <div class="panel-body">
                                            <div class="col-md-4 text-center">
                                                <div class="thumbnail">
                                                    <asp:DataList ID="dlImages" runat="server" RepeatDirection="Horizontal" RepeatColumns="3" CellPadding="5">
                                                        <ItemTemplate>
                                                            <div class="caption">
                                                                <h3><%# Eval("pc_name") %><br /></h3>                                                   <!--imageDesc   -->
                                                                  <a id="imageLink" href='<%# Eval("si_filename","/Group_Images/{0}") %>' title='<%#Eval("si_description") %>' rel="lightbox[Brussels]">
                                                                    <asp:Image ID="Image1" ImageUrl='<%# Bind("si_filename", "~/Group_Images/{0}") %>' runat="server" Width="112" Height="84" />
                                                                </a>
                                                            </div>
                                                        </ItemTemplate>
                                                    </asp:DataList>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    <!--panel-default-->
                                </div>
                                <!--col-md-3-->
                            </ItemTemplate>
                        </asp:Repeater>



    private void BindRepeater()    {
        string constr = ConfigurationManager.ConnectionStrings["FYPConnectionString1"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                //ORDER BY DATE
                cmd.CommandText = "select * from Groups WHERE Group_Type ='Group'";
                cmd.Connection = con;
                con.Open();
                repGroupPhotoGallery.DataSource = cmd.ExecuteReader();
                repGroupPhotoGallery.DataBind();
                con.Close();
            }
        }
    }
    protected void repGroupPhotoGallery_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataList datalist = e.Item.FindControl("dlImages") as DataList;


        //find the correct group id of the item
        string student_Id = DataBinder.Eval(e.Item.DataItem, "Group_Id").ToString();
        SqlDataAdapter sda = new SqlDataAdapter("select pc_name = pc.Name, s_Id = si.Group_Id, si_filename = si.filename, si_description = si.imageDesc from Groups as s inner join dbo.group_images as si on s.Group_Id = si.group_id inner join dbo.photo_collection_images pci on pci.group_image_id = si.Group_Id inner join dbo.photo_collection as pc on pc.id = pci.photo_collection_id where s.Group_Id =" + student_Id, con);
        DataTable dt = new DataTable();
        sda.Fill(dt);


        //bind data to the nested datalist with the Group_Id in the where clause of the query
        datalist.DataSource = dt;
        datalist.DataBind();
    }
 

斯维格

成员
已加入
2016年10月4日
留言内容
6
编程经验
1-3
上面的代码生成以下显示:

片段5.PNG

上面的图像已正确链接到这些组。

但是,显示在每个图像上方的标题/名称不正确,因为它们未链接到SQL表中的那些图像。

你们可以告诉我如何解决这个问题吗?

非常感谢!
 

斯维格

成员
已加入
2016年10月4日
留言内容
6
编程经验
1-3
我还尝试了以下方法,将其他中继器与详细信息绑定在一起,但它不起作用。
有人可以告诉我以下代码段是什么问题吗?

SqlConnection connR;
字符串connectionStringR = ConfigurationManager.ConnectionStrings [
"FYPConnectionString1"].ConnectionString;
connR =新的SqlConnection(connectionStringR);
SqlDataAdapter sda =新的SqlDataAdapter(@"声明@Group_Id INT;宣告@Photo_Collection_Id INT;宣告@Group_Image_Id INT; SELECT @Group_Id = Group_Id,Group_Name来自组SELECT @Photo_Collection_Id = ID,名称来自Photo_Collection WHERE Group_Id = @Group_Id SELECT @Group_Image_Id = Group_Image_Id FROM Photo_Collection_Images WHERE Photo_Collection_Id = @Photo_Collection_Id SELECT ID,文件名,imageDesc FROM ID_Image =;", connR);
DataTable dt = new DataTable();
sda.Fill(dt);
repStuff.DataSource = dt;
repStuff.DataBind();
 
最佳 底部