【问题标题】:copy row from asp.net gridview to new page using VB使用VB将行从asp.net gridview复制到新页面
【发布时间】:2017-01-13 03:21:34
【问题描述】:

我正在尝试通过gridview 中一列中的按钮从gridview 复制一行以显示在新页面上。我从链接到我的项目的 Access 数据库中填充了我的 gridview。我尝试了几种不同的方法,但是在运行项目时没有任何内容会显示行信息。我从实际数据视图中尝试的当前代码是:

示例 1a

<asp:GridView ID="Grid1" runat="server" Width ="90%" AutoGenerateColumns="false" OnRowDeleting="Grid1_RowDeleting" DataKeyNames="Title">
    <Columns>
        <asp:BoundField DataField="Title" HeaderText="Title" />
        <asp:BoundField DataField="Console" HeaderText="Console" />
        <asp:BoundField DataField="Year_Released" HeaderText="Year Released" />
        <asp:BoundField DataField="ESRB" HeaderText="ESRB Rating" />
        <asp:BoundField DataField="Score" HeaderText="Personal Score" />
        <asp:BoundField DataField="Publisher" HeaderText="Publisher" />
        <asp:BoundField DataField="Developer" HeaderText="Developer" />
        <asp:BoundField DataField="Genre" HeaderText="Genre" />
        <asp:BoundField DataField="Purchase" HeaderText="Purchase Date" />
        <asp:TemplateField ItemStyle-Width="7%" ShowHeader="False">
           <ItemTemplate>
             <asp:LinkButton ID="lnkDetails" runat="server" Text="View" PostBackUrl='<%# "~/ViewDetails.aspx?RowIndex=" & Container.DataItemIndex %>'/>
           </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

我试图显示代码的页面上的代码隐藏代码是:

示例 1b

 Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Me.Page.PreviousPage IsNot Nothing Then
            Dim rowIndex As Integer = Integer.Parse(Request.QueryString("RowIndex"))
            Dim GridView1 As GridView = DirectCast(Me.Page.PreviousPage.FindControl("Grid1"), GridView)
            Dim row As GridViewRow = GridView1.Rows(rowIndex)
            lblTitle.Text = row.Cells(0).Text
            lblConsole.Text = row.Cells(1).Text
            lblYear.Text = row.Cells(2).Text
            lblESRB.Text = row.Cells(3).Text
            lblScore.Text = row.Cells(4).Text
            lblPublisher.Text = row.Cells(5).Text
            lblDeveloper.Text = row.Cells(6).Text
            lblGenre.Text = row.Cells(7).Text
            lblPurchase.Text = row.Cells(8).Text

        End If
    End Sub

我还尝试了另一组代码,其中gridview上的按钮是:

示例 2a

<asp:Button ID="btnLink" runat="server" Text="View Details" PostBackUrl='<%# Eval("Title", "~/ViewDetails.aspx?Id={0}") %>'/>

代码隐藏代码在哪里:

示例 2b

    Protected Sub Page_Load(sender As Object, e As EventArgs)
        If Not IsPostBack Then
            Dim GameTitle As String = Request.QueryString("Id")

            Dim connString As String = "PROVIDER=Microsoft.ACE.OLEDB.12.0;" + "DATA SOURCE=" + Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "App_Data" + "db1.accdb")
            Using connection As New OleDbConnection(connString)
                connection.Open()
                Dim reader As OleDbDataReader = Nothing
                Dim command As New OleDbCommand((Convert.ToString("SELECT * from [Video_Games] WHERE Title='") & GameTitle) + "'", connection)
                reader = command.ExecuteReader()
                While reader.Read()
                    lblTitle.Text = reader(0).ToString()
                    lblConsole.Text = reader(1).ToString()
                    lblYear.Text = reader(2).ToString()
                    lblESRB.Text = reader(3).ToString()
                    lblScore.Text = reader(4).ToString()
                    lblPublisher.Text = reader(5).ToString()
                    lblDeveloper.Text = reader(6).ToString()
                    lblGenre.Text = reader(7).ToString()
                    lblPurchase.Text = Convert.ToDateTime(reader(8).ToString()).ToShortDateString()
                End While
            End Using
        End If
    End Sub
End Class

我尝试过对两者进行变体,主要是第二种,但无论我尝试什么,标签都没有填充行信息。任何帮助将不胜感激,我可以发布任何其他需要的代码,比如我如何填充网格视图。谢谢。

【问题讨论】:

  • 第二个示例也是尝试加载标签还是用于其他目的?
  • 也是一种尝试。示例 2a 是原始 gridview 中的按钮,示例 2b 是我想要编码的页面中的 vb.net 代码。
  • ex2也是一种尝试,那你为什么有If Not Postback呢?它必须是回发。另外你确定你在Request.QueryString("RowIndex") 中得到了一个值和正确的值吗?
  • 我切换回发,虽然它没有解决问题。我不确定请求字符串是否正在获取值。你知道我怎么查吗?
  • 是的,使用调试器看看GameTitle的值是什么

标签: asp.net vb.net gridview


【解决方案1】:

就像在我的 .aspx 文件中将 AutoEventWireup 更改为“true”一样简单。

【讨论】:

    猜你喜欢
    • 2015-09-07
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 2016-02-28
    相关资源
    最近更新 更多