通过选择GridView1字段打开GridView2

时间:2017-07-18 19:07:06

标签: c# asp.net .net

我每次在 GridView1 中选择特定字段时都会尝试,它会在 GridView2 中的Access数据库中打开相关数据。

这是我页面上的代码。

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site1.Master" CodeBehind="MainView.aspx.vb" Inherits="DosimetryASPNET_WebApplication.MainView" %>


<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
</asp:Content>


<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder3" runat="server">
    <asp:Button ID="btnMenuView" runat="server" Text="Return to Menu" Width="200px" OnClick="btnMenuView_Click" />
    <br />
    <br />

</asp:Content>

<asp:Content ID="Content4" ContentPlaceHolderID="ContentPlaceHolder4" runat="server">
    <br />
    <br />

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="BatchID">
        <Columns>
            <asp:BoundField DataField="BatchID" HeaderText="BatchID" InsertVisible="False" ReadOnly="True" SortExpression="BatchID" />
            <asp:BoundField DataField="Product" HeaderText="Product" SortExpression="Product" />
            <asp:BoundField DataField="BatchSize" HeaderText="BatchSize" SortExpression="BatchSize" />
            <asp:BoundField DataField="Priority" HeaderText="Priority" SortExpression="Priority" />
            <asp:BoundField DataField="StartReq" HeaderText="StartReq" SortExpression="StartReq" />
            <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" />
        </Columns>
    </asp:GridView>

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>" ProviderName="<%$ ConnectionStrings:NorthwindConnectionString1.ProviderName %>" SelectCommand="SELECT * FROM [AllBatches]"></asp:SqlDataSource>

    <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="BatchID" Visible="False">
    </asp:GridView>

</asp:Content>  

这是我用来填充 GridView1

的代码
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim dt As New Northwind.AllBatchesDataTable
        Using da As New NorthwindTableAdapters.AllBatchesTableAdapter
            da.Fill(dt)
        End Using
            GridView1.DataSource = dt.DefaultView
            GridView1.DataBind()
End Sub  

我正在使用Access数据库并填充 GridView2 我使用第二个表。

对于 GridView1 ,我使用“ AllBatches ”表格,其中包含以下列: BatchID - 产品 - BatchSize - 优先级 - StartReq - 状态< /强>

对于 GridView2 ,我希望调用表“ IngredientsTable ”。它包含以下列: LotManufactID - 成分 - 实际 - 目标 - 最低 - 最高< / strong> - WeighinhDate - 状态 - IDBatchID

在我的Access数据库中,该表的工作方式与我希望它在ASP.NET中一样。 当我点击“ AllBatches ”的“ BatchID ”时,它会在我点击“ IngredientsTable “数据。 我在两个表之间的银行中创建了一个关系。

执行此操作可能过于复杂,但我需要帮助开发此功能,至少在 GridView2 IngredientsTable ”数据中打开与“< “ AllBatches ”的strong> BatchID “。

我希望你成功地证明了我的怀疑和明确。 我在等待帮助。

1 个答案:

答案 0 :(得分:0)

许多可能的解决方案之一: - 声明&#34;选择&#34; GridView1中的字段 - 定义GridView2列 - 单击选择字段时,将引发onSelectedIndexChanged,并在该事件中读取所单击行的BatchID,对成分表执行查询并在GridView2上显示结果

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    int BatchID = (int)GridView1.DataKeys[GridView1.SelectedIndex].Value;
    //Access Ingredients with batchID
    var dtIngredients = new DataTable(); // create datasource with a query
    GridView2.Visible = true;
    GridView2.DataSource = dtIngredients;
    GridView2.DataBind();
}

和代码

getContext().getServiceReference(LogService.class.getName());