У меня есть 2 таблицы, из которых я хочу получить данные. Первая таблица - таблица Подрядчика, в которой есть персональная информация подрядчиков, а вторая таблица - таблица компании, которая имеет 2 столбца, CompanyName и CompanyID. Обе таблицы имеют одинаковый столбец, CompanyID.Как я могу получить SelectedIndexChanged, чтобы получить имя компании вместо companyid в текстовое поле, две разные таблицы?
В текущем коде, который у меня есть, есть gridview с столбцом «Выбрать», SelectedIndexChanged возвращает значения из базы данных для заполнения текстовых полей.
Что я хочу сделать, это получить имя компании, а не идентификатор компании, заполненный в текстовое поле (txtCompany), как я могу изменить текущий код ниже, чтобы сделать это?
ASPX
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtPID" runat="server"></asp:TextBox>
<asp:TextBox ID="txtCompany" runat="server"></asp:TextBox>
<asp:GridView ID="TDetails" DataSourceID="SqlDataSource1" DataKeyNames="PersonID" AutoGenerateColumns="false" runat="server" OnSelectedIndexChanged="TDetails_SelectedIndexChanged" >
<HeaderStyle BackColor="gray" ForeColor="White" />
<Columns
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lbtnSelect" runat="server" CommandName="Select" Text="Select" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Last Name">
<ItemTemplate>
<asp:Label ID="lblLastName" runat="server" Text='<%#Eval("LastName") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="First Name">
<ItemTemplate>
<asp:Label ID="lblFirstName" runat="server" Text='<%#Eval("FirstName") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Company" Visible="false">
<ItemTemplate>
<asp:Label ID="lblCompany" runat="server" Text='<%#Eval("CompanyID") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="PersonID" Visible="false">
<ItemTemplate>
<asp:Label ID="lblPID" runat="server" Text='<%#Eval("PersonID") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
.cs
protected void TDetails_SelectedIndexChanged(object sender, EventArgs e)
{
txtPID.Text = TDetails.DataKeys[TwicDetails.SelectedRow.RowIndex].Value.ToString();
txtLastName.Text = (TDetails.SelectedRow.FindControl("lblLastName") as Label).Text;
txtFirstName.Text = (TDetails.SelectedRow.FindControl("lblFirstName") as Label).Text;
txtCompany.Text = (TDetails.SelectedRow.FindControl("lblCompany") as Label).Text;
}