【问题标题】:How to implement datatable in a gridview in a master page如何在母版页的网格视图中实现数据表
【发布时间】:2019-12-24 05:55:19
【问题描述】:

我正在使用 AdminLTE 库,并为我的主设计了 2 个内容占位符;一个在头部,另一个在身体部分。我无法让我的 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

这是我的网格视图代码隐藏文件中“FillTabularData”方法的调用

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

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

【问题讨论】:

    标签: asp.net vb.net datatable webforms master-pages


    【解决方案1】:

    这样试试(我不熟悉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 
    

    【讨论】:

    • DataTable dt= 更改为Dim dt As DataTable =
    • End Sub 更改为End Function
    • 当您的函数类型为 DataTable 时,您不能返回 DataSet。更改函数类型或返回DataTableReturn dTable.Tables(0)
    • 如果您将数据库对象保持在本地并使用Using...End Using 块,则不必检查ConnectionState。使用DataAdapter 时不必打开连接。但是,如果它发现它是打开的,它就会保持打开状态。
    • 如果您想要一个通用函数来填充数据表,请使用参数数组。在 where 子句中有多个参数是很常见的。您必须添加一个循环来添加参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2018-10-30
    • 1970-01-01
    • 2011-09-26
    相关资源
    最近更新 更多