首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在asp.net中建立网格视图中数据之间的关系

在asp.net中建立网格视图中数据之间的关系
EN

Stack Overflow用户
提问于 2011-11-14 11:57:35
回答 2查看 429关注 0票数 0

我有一个方法,可以用来自sql表的数据填充datatable,然后用它来填充网格视图。现在在sql表中,我有一个名为" hotel“的字段,其中包含一个酒店的" id”,该字段与另一个名为"hotels“的表有关,该表具有酒店id和名称。

现在,在我的网格视图中,我希望显示酒店名称,而不是酒店id。我该怎么做呢。

代码语言:javascript
代码运行次数:0
运行
复制
 public static DataTable GetRequests(string empid)
        {
            DataTable dt = new DataTable();
            string strConnection = ConfigurationManager.AppSettings["connStr"];
            using (SqlConnection connection = new SqlConnection(strConnection))
            {
                connection.Open();
                SqlCommand sqlcmd = new SqlCommand();
                SqlDataAdapter sAdap = new SqlDataAdapter();                
                sqlcmd.Connection = connection;
                sqlcmd.CommandType = System.Data.CommandType.Text;
                sqlcmd.CommandText = "Select request_date,hotel,dining_date,status from requests Where emp_id='" + empid + "'";
                sAdap.SelectCommand = sqlcmd;
                sAdap.Fill(dt);
            }
            return dt;            
        }

这是检索记录的方法。酒店字段包含我想要其名称的ID。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-14 12:16:36

更改您的sql查询,事情就会解决。

让我们在另一个表'HotelDetails‘中说' hotel’,它包含旅馆id,并在另一个表中包含旅馆id和旅馆名称。

酒店HotelId int表结构HotelDetails HotelId int,HotelName varchar(10)表结构

现在你的查询应该是

代码语言:javascript
代码运行次数:0
运行
复制
SELECT b.HotelName as HotelName, c.request_date as RequestDate,c.dining_date as DiningDate ,c.status as Status FROM Hotel a, HotelDetails b, requests c WHERE a.HotelId = b.HotelId and emp_id='" + empid + "'

在GridView中,您的DataFild应为HotelName才能显示酒店名称

例如

代码语言:javascript
代码运行次数:0
运行
复制
<Columns>
                                                            <asp:TemplateField HeaderText="Slno">
                                                                <ItemTemplate>
                                                                    <%# Container.DataItemIndex + 1 %>
                                                                </ItemTemplate>
                                                                <ControlStyle Width="30px" />
                                                                <ItemStyle ForeColor="#00846F" Width="30px" />
                                                            </asp:TemplateField>
                                                            <asp:BoundField ControlStyle-Width="90" DataField="HotelName" 
                                                                HeaderText="Hotel Name" ItemStyle-ForeColor="#00846F" 
                                                                ItemStyle-Width="30">
                                                                <ControlStyle Width="30px" />
                                                                <ItemStyle Width="30px" />
                                                            </asp:BoundField>
                                                            <asp:BoundField ControlStyle-ForeColor="#00846F" ControlStyle-Width="190" 
                                                                DataField="RequestDate" HeaderText="Request Date" 
                                                                ItemStyle-ForeColor="#00846F" ItemStyle-Width="100">
                                                                <ControlStyle Width="100px" />
                                                                <ItemStyle Width="100px" />
                                                            </asp:BoundField>
                                                            <asp:BoundField ControlStyle-ForeColor="#00846F" ControlStyle-Width="100" 
                                                                DataField="DiningDate" HeaderText="Dining Date" 
                                                                ItemStyle-ForeColor="#00846F" ItemStyle-Width="50">
                                                                <ControlStyle Width="50px" />
                                                                <ItemStyle Width="50px" />
                                                            </asp:BoundField>
                                                            <asp:BoundField ControlStyle-ForeColor="#00846F" ControlStyle-Width="100" 
                                                                DataField="Status" HeaderText="Status" 
                                                                ItemStyle-ForeColor="#00846F" ItemStyle-Width="50">
                                                                <ControlStyle Width="50px" />
                                                                <ItemStyle Width="50px" />
                                                            </asp:BoundField>



                                                        </Columns>

如果您觉得有用,请将其标记为您的答案,否则让我知道....

票数 1
EN

Stack Overflow用户

发布于 2011-11-14 12:10:25

您必须使用Joins

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8117148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档