首页 > 解决方案 > 如何在母版页的网格视图中实现数据表

问题描述

我正在使用 AdminLTE 库,并为我的主设计了 2 个内容占位符;一个在头部,另一个在身体部分。我无法让我的 gridview 在数据表中呈现其内容。

我通过一个工作正常的类文件中的共享方法填充了gridview。我试图在我的 aspx 表单的 head 部分编写 Javascript document.ready 函数,但 gridview 似乎无法识别该函数。

这是标记

<div class="box">
    <div class="box-header">
        <h3 class="box-title">List of available regions</h3>
    </div>
    <div class="box-body">
        <asp:GridView ID="grvRegions" runat="server" class="table table-bordered table-striped"
            EmptyDataText="Empty region list" OnRowEditing="OnRowEditing"
            OnRowCancelingEdit="OnRowCancelingEdit" OnRowUpdating="OnRowUpdating"
            AutoGenerateColumns="False" DataKeyNames="ID" AllowPaging="True">
            <Columns>
                <asp:TemplateField HeaderText="ID" InsertVisible="False" SortExpression="ID">
                    <EditItemTemplate>
                        <asp:Label ID="lblID" runat="server" Text='<%# Eval("ID")%>'></asp:Label>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("ID")%>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Region" InsertVisible="False" SortExpression="ID">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtEditRegion" required="required" CssClass="form-control" MaxLength="50" runat="server" Text='<%# Eval("Region")%>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblRegion" runat="server" Text='<%# Bind("Region")%>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField ShowHeader="False">
                    <EditItemTemplate>
                        <asp:LinkButton ID="lbtUpdate" CssClass="btn btn-success" runat="server" CausesValidation="True" CommandName="Update" Text="Update"></asp:LinkButton>
                        &nbsp;<asp:LinkButton ID="lbtCancel" CssClass="btn btn-danger" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:LinkButton ID="lbtRemove" class="btn btn-info" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

    </div>

</div>

这是为gridview检索数据的方法

Public Shared Sub FillTabularData(container As Object, spName As String, Optional param As SqlParameter = Nothing)

    Dim command As New SqlCommand(spName, connection)
        command.CommandType = CommandType.StoredProcedure
        If param IsNot Nothing Then
            command.Parameters.Add(param)
        End If
        If connection.State = ConnectionState.Closed Then
            connection.Open()
        End If
        Dim dTable As New DataSet
        Dim dAdapter As SqlDataAdapter = New SqlDataAdapter(command)
        dAdapter.Fill(dTable)
        container.DataSource = dTable
        container.DataBind()

End Sub

这是我在gridview的代码隐藏文件中调用“FillTabularData”方法

Sub BindData()
    FillTabularData(grvRegions, "sp_list_regions")
    grvRegions.UseAccessibleHeader = True
    grvRegions.HeaderRow.TableSection = TableRowSection.TableHeader
End Sub

我希望输出呈现在具有分页、排序、搜索和每页行数功能的数据表中。

标签: asp.netvb.netdatatablewebformsmaster-pages

解决方案


像这样试试(我对vb.net编码不熟悉,请检查语法)

Sub BindData()
 Dim dt As New DataSet 
 dt= FillTabularData("sp_list_regions")
 grvRegions.DataSource = dTable
 grvRegions.DataBind()
 grvRegions.UseAccessibleHeader = True
 grvRegions.HeaderRow.TableSection = TableRowSection.TableHeader
End Sub


Public Shared Function FillTabularData(spName As String, Optional param As SqlParameter = Nothing) As DataSet
Dim command As New SqlCommand(spName, connection)
    command.CommandType = CommandType.StoredProcedure
    If param IsNot Nothing Then
        command.Parameters.Add(param)
    End If
    If connection.State = ConnectionState.Closed Then
        connection.Open()
    End If
    Dim dTable As New DataSet
    Dim dAdapter As SqlDataAdapter = New SqlDataAdapter(command)
    dAdapter.Fill(dTable)
    return dTable

End Function 

推荐阅读