【问题标题】:How can I get SelectedIndexChanged to get companyname instead of companyid into textbox, 2 different tables?如何让 SelectedIndexChanged 将 companyname 而不是 companyid 放入文本框中,2 个不同的表?
【发布时间】:2017-02-21 16:25:44
【问题描述】:

我有 2 个要从中获取数据的表。第一个表是包含承包商个人信息的 Contractor 表,第二个表是 Company 表,它有 2 列,CompanyName 和 CompanyID。两个表都有相同的列,CompanyID。

我的当前代码有一个带有“选择”列的网格视图,SelectedIndexChanged 从数据库返回值以填充文本框。

我想要做的是获取公司的名称,而不是填写到文本框 (txtCompany) 中的 companyID,我该如何修改下面的当前代码来做到这一点?

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

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您可以修改您的 SQL 查询以获取 CompanyName 以及您如何获取 CompanyId 并将其绑定到 gridview 并将可见性设置为 false,最后您可以设置文本框的值,就像您对其他控件所做的那样:-

    SQL 查询:-

    SELECT CompanyId, CompanyName, ....
    FROM tblCompany..
    

    aspx:-

     <asp:TemplateField HeaderText="Company" Visible="false">
         <ItemTemplate>
             <asp:Label ID="lblCompanyName" runat="server" Text='<%#Eval("CompanyName") %>' />
         </ItemTemplate>
     </asp:TemplateField>
    

    【讨论】:

      猜你喜欢
      • 2019-10-16
      • 2012-05-21
      • 2013-12-19
      • 1970-01-01
      • 2020-01-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      相关资源
      最近更新 更多