我有一个方法,可以用来自sql表的数据填充datatable,然后用它来填充网格视图。现在在sql表中,我有一个名为" hotel“的字段,其中包含一个酒店的" id”,该字段与另一个名为"hotels“的表有关,该表具有酒店id和名称。
现在,在我的网格视图中,我希望显示酒店名称,而不是酒店id。我该怎么做呢。
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。
发布于 2011-11-14 04:16:36
更改您的sql查询,事情就会解决。
让我们在另一个表'HotelDetails‘中说' hotel’,它包含旅馆id,并在另一个表中包含旅馆id和旅馆名称。
酒店HotelId int表结构HotelDetails HotelId int,HotelName varchar(10)表结构
现在你的查询应该是
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才能显示酒店名称
例如
<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>
如果您觉得有用,请将其标记为您的答案,否则让我知道....
发布于 2011-11-14 04:10:25
您必须使用Joins。
https://stackoverflow.com/questions/8117148
复制相似问题