【问题标题】:ASP.NET GridView Linking to another GridViewASP.NET GridView 链接到另一个 GridView
【发布时间】:2017-06-16 15:46:50
【问题描述】:

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

我想要做的是在行号之前的列中添加一个超链接/链接按钮/按钮(不确定哪个)到网格视图中。我目前有一个带有 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

抛出的错误是“未找到类型 'GridView' 上的公共成员 'RowIndex'”

我还应该提到,第二个网格视图位于同一页面上的 div 标记中。我不想跳到另一个 apsx 页面。 (我可以做到就好)

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

有人有什么想法吗?

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

【问题讨论】:

    标签: asp.net vb.net gridview webforms


    【解决方案1】:

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

    Convert.ToInt32(e.CommandArgument)
    

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

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

    【讨论】:

    • 这应该在后面代码的 RowEditing 子中?因为我收到一条错误消息,指出 Public Override Overloads Readonly Property Cells as TableCellCollection 没有参数并且它的返回类型无法被索引。这让人觉得我用错了子???
    • 根据子名称(您没有包含您的句柄子句),我认为它发生在您的 RowCommand 事件中(应该在单击链接按钮时触发)。
    【解决方案2】:

    这就是我最终让它工作的方式。

        '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,现在它工作得很好! 感谢韦纳丁的指点!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多