GridView 页面刷新时显示重复数据 ASP.NET VB
GridView display duplicate data when page refresh ASP.NET VB
ASP.NET 中的 GridView:
<div>
<asp:Panel ID="Panel_listview" runat="server" Font-Names="Arial" HorizontalAlign="Center">
<asp:GridView ID="gridview_book_info" runat="server"></asp:GridView>
</asp:Panel>
</div>
Page_Load 在 VB:
Dim gridview_detail As String
gridview_detail = "select * from book;"
da = New MySqlDataAdapter(gridview_detail, cn)
da.Fill(ds, "book")
gridview_book_info.DataSource = ds
gridview_book_info.DataBind()
备注:
cn
是 MySQL 连接
ds
是 数据集
这是我的问题:
当我调试时,Page_Load被触发,gridview
从mysql数据库获取数据并显示。示例:
ABCDE (header)
abcde
但是当我刷新页面时,gridview会变成这样:
ABCDE (header)
abcde
abcde
每当我刷新页面时,它都会从 mysql 数据库复制日期,我试过:
- 检查 IsPostBack 是否为真然后禁用数据检索。
- 在数据检索之前将数据源设置为 Nothing
- 检查 gridview 行数是否为零
我想知道的:
- IsPostBack 旁边的其他代码真正检查页面是否真的刷新,然后我可以阻止 gridview 再次从 mysql 数据库检索数据。
- 阻止 GridView 复制,因为我无法阻止用户使用刷新按钮
我需要帮助!
IsPostBack
表示发生了 post 返回服务器,而不是页面已刷新。
尝试检查 post 在数据绑定之前的页面加载方法中没有发生返回
If Not Page.IsPostBack Then
Dim gridview_detail As String
gridview_detail = "select * from book;"
da = New MySqlDataAdapter(gridview_detail, cn)
da.Fill(ds, "book")
gridview_book_info.DataSource = ds
gridview_book_info.DataBind()
End If
我看看Here
我在Page_Load中使用的原始代码:
If Not Me.IsPostBack then
Dim gridview_detail As String
gridview_detail = "select * from book;"
da = New MySqlDataAdapter(gridview_detail, cn)
da.Fill(ds, "book")
gridview_book_info.DataSource = ds
gridview_book_info.DataBind()
End If
使用我在顶部声明的 public 模块:
Public ds As New DataSet()
Public connStr As String = "Server=localhost...."
Public cn As New MySqlConnection(connStr)
我在 Page_Load 中进行了更改,当我刷新页面时,它可以防止 mysql table "book" 中出现重复数据:
If Not Me.IsPostBack Then
Using cn
Using cmd = New MySqlCommand("SELECT * FROM book")
Using da As New MySqlDataAdapter()
cmd.Connection = cn
da.SelectCommand = cmd
Using ds As New DataSet()
da.Fill(ds)
gridview_book_info.DataSource = ds
gridview_book_info.DataBind()
End Using
End Using
End Using
End Using
End If
所以解法是:
访问数据库时总是使用"using"。
如果您对这个问题有更好的解释,请在下面评论为什么使用 "using"。
您需要使用 using
这个词,因为它是安全的并且值得推荐使用。
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim constr As String = ConfigurationManager.ConnectionStrings("yourConnectionString").ConnectionString
Using con As New MySqlConnection(constr)
Using cmd As New MySqlCommand("SELECT * FROM books")
Using sda As New MySqlDataAdapter()
cmd.Connection = con
sda.SelectCommand = cmd
Using dt As New DataTable()
sda.Fill(dt)
GridView1.DataSource = dt
GridView1.DataBind()
End Using
End Using
End Using
End Using
End If End Sub
完整文档。看看下面:-
希望对你有帮助
ASP.NET 中的 GridView:
<div>
<asp:Panel ID="Panel_listview" runat="server" Font-Names="Arial" HorizontalAlign="Center">
<asp:GridView ID="gridview_book_info" runat="server"></asp:GridView>
</asp:Panel>
</div>
Page_Load 在 VB:
Dim gridview_detail As String
gridview_detail = "select * from book;"
da = New MySqlDataAdapter(gridview_detail, cn)
da.Fill(ds, "book")
gridview_book_info.DataSource = ds
gridview_book_info.DataBind()
备注:
cn
是 MySQL 连接ds
是 数据集
这是我的问题:
当我调试时,Page_Load被触发,gridview
从mysql数据库获取数据并显示。示例:
ABCDE (header)
abcde
但是当我刷新页面时,gridview会变成这样:
ABCDE (header)
abcde
abcde
每当我刷新页面时,它都会从 mysql 数据库复制日期,我试过:
- 检查 IsPostBack 是否为真然后禁用数据检索。
- 在数据检索之前将数据源设置为 Nothing
- 检查 gridview 行数是否为零
我想知道的:
- IsPostBack 旁边的其他代码真正检查页面是否真的刷新,然后我可以阻止 gridview 再次从 mysql 数据库检索数据。
- 阻止 GridView 复制,因为我无法阻止用户使用刷新按钮
我需要帮助!
IsPostBack
表示发生了 post 返回服务器,而不是页面已刷新。
尝试检查 post 在数据绑定之前的页面加载方法中没有发生返回
If Not Page.IsPostBack Then
Dim gridview_detail As String
gridview_detail = "select * from book;"
da = New MySqlDataAdapter(gridview_detail, cn)
da.Fill(ds, "book")
gridview_book_info.DataSource = ds
gridview_book_info.DataBind()
End If
我看看Here
我在Page_Load中使用的原始代码:
If Not Me.IsPostBack then
Dim gridview_detail As String
gridview_detail = "select * from book;"
da = New MySqlDataAdapter(gridview_detail, cn)
da.Fill(ds, "book")
gridview_book_info.DataSource = ds
gridview_book_info.DataBind()
End If
使用我在顶部声明的 public 模块:
Public ds As New DataSet()
Public connStr As String = "Server=localhost...."
Public cn As New MySqlConnection(connStr)
我在 Page_Load 中进行了更改,当我刷新页面时,它可以防止 mysql table "book" 中出现重复数据:
If Not Me.IsPostBack Then
Using cn
Using cmd = New MySqlCommand("SELECT * FROM book")
Using da As New MySqlDataAdapter()
cmd.Connection = cn
da.SelectCommand = cmd
Using ds As New DataSet()
da.Fill(ds)
gridview_book_info.DataSource = ds
gridview_book_info.DataBind()
End Using
End Using
End Using
End Using
End If
所以解法是:
访问数据库时总是使用"using"。
如果您对这个问题有更好的解释,请在下面评论为什么使用 "using"。
您需要使用 using
这个词,因为它是安全的并且值得推荐使用。
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim constr As String = ConfigurationManager.ConnectionStrings("yourConnectionString").ConnectionString
Using con As New MySqlConnection(constr)
Using cmd As New MySqlCommand("SELECT * FROM books")
Using sda As New MySqlDataAdapter()
cmd.Connection = con
sda.SelectCommand = cmd
Using dt As New DataTable()
sda.Fill(dt)
GridView1.DataSource = dt
GridView1.DataBind()
End Using
End Using
End Using
End Using
End If End Sub
完整文档。看看下面:-
希望对你有帮助