ASP.NET GridView链接到另一个GridView

时间:2017-06-16 15:46:51

标签: asp.net vb.net gridview webforms

好的,这是另一件事,目前正在困扰我,我似乎找不到符合我需要的答案。在aspx页面上,我有一个网格视图,它从SQL查询中获取数据并填充网格视图,该视图工作正常。在此网格视图上,尽管第一列(第0列)具有从查询返回的行号。返回的网格视图数据中可能有一行或10行或更多行。

我要做的是在行号前面的列中添加一个超链接/ LinkBut​​ton / Button(不确定是哪个)到网格视图。我目前有一个带有asp链接按钮的TemplateField,我可以看到它。

我似乎无法弄明白,而且我一直在寻找几天,是如何用行号拉单元格传递给我的代码(VB.NET)来它运行一个辅助查询,该查询将使用行项目详细信息填充另一个网格视图。

以下是我目前如何设置gridview的方法:

<asp:GridView ID="gvDetailSecondLevel" runat="server" AutoGenerateColumns="false" Width="1010px" CellPadding="4" ForeColor="#333333" GridLines="Horizontal" CssClass="SecLvlDtl" OnRowCommand="gvDetailSecondLevel_RowCommand">
            <Columns>
                <asp:TemplateField ItemStyle-VerticalAlign="Middle">
                    <ItemTemplate>
                        <asp:LinkButton ID="btnLineDetail" runat="server" CssClass="dtlButtons" CommandName="Edit" Text="Line Detail" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField  DataField="Line #" HeaderText="Line #" />
                <asp:BoundField DataField="Part Desc" HeaderText="Part Description" />
                <asp:BoundField DataField="PCS" HeaderText="PCS" />
                <asp:BoundField DataField="WT" HeaderText="WT" />
                <asp:BoundField DataField="SF" HeaderText="SF" />
            </Columns>

网格视图的其余部分是格式化的,所以为了简洁,我没有列出它。

背后的当前代码(我肯定是错误的,因为它会抛出错误)如下:

    Protected Sub gvDetailSecondLevel_RowCommand(sender As Object, e As GridViewCommandEventArgs)
    'Setup Variables
        Dim lineNumber As String = gvDetailSecondLevel.Rows(sender.RowIndex).Cells(0).Text

        'Make controls visibile
        btnClear.Visible = True
        SOThirdLevel.Visible = True

        'Retrieve Thrid Level SQL Data
        bindThirdLevel(lineNumber)
    End Sub

被抛出的错误表示&#34;公共成员&#39; RowIndex&#39;在类型&#39; GridView&#39;找不到&#34;

我还应该提到第二个网格视图位于同一页面上的div标签中。我不是想跳到另一个apsx页面。 (我能做到这一点很好)

所以我需要弄清楚如何将行号单元数据传递给后面的代码,以便我可以处理它。

有人有任何想法吗?

提前感谢任何帮助或想法。

2 个答案:

答案 0 :(得分:0)

要获取行索引,需要使用GridViewCommandEventArgs对象(e)。以下是一些可以满足您需求的代码:

Convert.ToInt32(e.CommandArgument)

此外,单元格(0)将为您提供包含链接按钮的单元格。因此,获取行号的行将如下所示:

Dim lineNumber As String = gvDetailSecondLevel.Rows(Convert.ToInt32(e.CommandArgument)).Cells(1).Text

答案 1 :(得分:0)

这就是我最终让它发挥作用的方式。

    'Get RowIndex
    Dim rowIndex As Integer = Convert.ToInt32(e.CommandArgument)

    'Reference Grid View Row
    Dim row As GridViewRow = gvDetailSecondLevel.Rows(rowIndex)

    'Get Cell value
    Dim lineNumber As String = row.Cells(1).Text

然后我能够将变量lineNumber传递给我的sub,它现在运行得很好! 感谢Wenadin的指针!