установление связи между данными в gridview в asp.net - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть метод, который будет заполнять данные данными из таблицы SQL, которые, в свою очередь, будут использоваться для заполнения таблицы.Теперь в таблице sql у меня есть поле под названием «hotel», которое содержит «идентификатор» отеля, который относится к другой таблице под названием «hotels» с идентификатором и названием отеля.

Теперь в моем виде сетки я хочу отобразить название отеля вместо идентификатора отеля.Как я могу это сделать.

 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;            
        }

Это метод, который извлекает записи.Поле отеля содержит идентификатор, для которого я хочу имя.

Ответы [ 2 ]

1 голос
/ 14 ноября 2011

Измените свой SQL-запрос, и все получится.

Скажем, «Отель» с идентификатором отеля, а в другой таблице - «Детали отеля» с идентификатором и названием отеля.

Столовая структура отеля 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>

Если вы сочтете это полезным, отметьте это как свой ответ, иначе дайте мне знать ...

1 голос
/ 14 ноября 2011

Вы должны использовать Joins .

...