背景,你需要知道: 我有两个表 - 一个叫“的UserProfiles”,一个叫“评论” - 没有在“意见”称为“CommentUser”查找字段该表链接到名为'TravellerName'的'userprofiles'中的字段。SQL JOIN + WHERE
用户的头像图片路径(这是/Account/UserProfileAvatar/[TravellerName].jpg)可在名为'UserAvatar'的字段下的'userprofiles'表中找到。
gridview本身使用带有asp:Template的TemplateField,使用Eval然后是Database字段。这是我的意图是,注释部分显示数据的这4个领域:
- 用户形象
- 的用户名( 'CommentUser')
- 标语
- 评论身体
我对点2 - 4罚款,但点1是你们进来的地方。
客户端代码如下所示:
<%-- Comments Box --%> <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataSourceID="CommentsDataSource" Height="167px" Width="325px"> <Columns> <asp:TemplateField HeaderText="Comments"> <ItemTemplate> <div style="background-color:Silver"> <div class="avatar-frame"> <asp:Image runat="server" ImageUrl='<%# Eval("UserAvatar") %>'/> </div> <h1><%# Eval("TagLine")%></h1> <h2><%# Eval("CommentUser")%></h2> <p><%# Eval("CommentBody")%></p> </div> </ItemTemplate> <AlternatingItemTemplate> <div style="background-color:White"> <div class="avatar-frame"> <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("UserAvatar") %>'/> </div> <h1><%# Eval("TagLine")%></h1> <h2><%# Eval("CommentUser")%></h2> <p><%# Eval("CommentBody")%></p> </div> </AlternatingItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:SqlDataSource ID="CommentsDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:BookMeetConnString %>" ProviderName="<%$ ConnectionStrings:BookMeetConnString.ProviderName %>" SelectCommand="SELECT comments.CommentUser, comments.TagLine, comments.CommentBody, comments.BookID, userprofiles.TravellerName, userprofiles.AvatarURL FROM userprofiles INNER JOIN comments ON userprofiles.[TravellerName] = comments.[CommentUser] WHERE ([BookID]= ?)"> <SelectParameters> <asp:QueryStringParameter Name="?" QueryStringField="ID" /> </SelectParameters> </asp:SqlDataSource> <%-- End of Comments Box --%>
正如你所看到的,我做了一个位散列了查询的(我有我需要做一个JOIN一个粗略的想法,但我知道绝对没有任何有关连接SQL)。
我查询的逻辑结构将是这样的:
- SELECT comments.CommentUser,comments.TagLine,comments.CommentBody (这是在评论表所需要的文本字段)
- 为每个已评论的用户从'userprofiles'中检索UserAvatar
- 仅显示该特定bookid的注释(SQL查询的最后部分将为WHERE([BookID] =?)
我希望你明白我所设想的查询是什么?
编辑: '的BookID' 的数据类型是一个访问查找(通过查找向导创建)。所有表格都是通过Microsoft Access创建的。就字段的实际数据类型而言,就我所知,Access自动将“数字”数据类型分配给所有查找。查找查询本身是从表'注释'中的'书签'到'书签'表中的'ID'。
[This](http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins)可以帮助你。 –
您是否收到错误?你应该提到'BookId'列所属的表名。 .. Where(TableName。[BookID] =?) – Arbaaz
如果您发布表格的快照,我们会更容易理解这个问题 – Arbaaz