ASP.NET开发笔记之数据列表等控件选择【listbox VS gridview】

本文介绍了如何使用ASP.NET中的GridView控件来优化局域网内文件的展示与下载体验。作者详细探讨了解决listbox控件问题的过程,并分享了利用GridView控件实现文件列表展示、选择及分页的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了方便将本地文件提供给局域网络用户下载。我将可下载的文件地址存放在MYSQL数据库(数据表download)。


而后,用户访问页面时,自动加载数据库中(数据表download)的文件链接,当用户点击其中一个连接的时候,启动下载操作。


我最先想到的是利用listbox控件,但是当把数据加载到listbox控件以后,点击其中的一个item,再点击“下载”链接,没有反应。网上经验谈到应该把autopostback属性设置为true,但是当我autopostback=true时,每次点击listbox控件中的item,页面都要重新加载,并且download的文件都是默认的第一个item,而不是选中的item。

网上的经验谈到,这个可能是由于postback以后自动触发页面的load事件,故而应当在load事件时候对postback进行判断,如果是初始触发load事件执行初始化代码,而如果是由于postback而触发的事件,而不执行这些初始化代码。

if ispostback=false then
'执行初始化代码
else
'执行postback触发的代码
end

然而,虽然经过上述代码处理,并没有改变点击listbox中的item而总是下载默认文件的问题。


由于学艺不精,而没有恒心和毅力深究listbox的使用。因此我考虑用其他控件代替listbox控件,通过一番深究,俺选择了girdview控件作为下一个测试对象。

首先,把数据加载到gridview后,发现竟然没办法触发gridview的GridView1_SelectedIndexChanged事件,哎,原来是这个控件的使用过程中要触发选择,需要通过对控件自动添加“选择“列。后台脚本加入GridView1.AutoGenerateSelectButton = True


结果如上图。

这样以后,当点击左边的”选择“连接,就能够触发SelectedIndexChanged事件了。


gridview问题2。使用大数据以后,新问题又来了。列表的长度随着共享文件个数越多,长度越来越长,故而整个页面的格局将会变得混乱不堪。也就是页面长度也在不断的拉伸,而影响整体的控件美化(当然,主要是我不会设置控件位置或相关的属性)

因而,考虑给gridview加上滚动条。网上的做法是把gridview放在DIV里头例如(链接):

<div style="overflow-y: scroll; height: 200px">
            <asp:GridView ID="GridView1" runat="server" Font-Size="12px" BackColor="#FFFFFF"
              GridLines="Both" CellPadding="4" Width="560">
              <HeaderStyle BackColor="#EDEDED" Height="26px" />
            </asp:GridView>
  </div>

但是我操作完了以后,发现,每次点击grdiview中的”选择“的时候,滚动条总是回到最上方,估计是又触发了postback事件了吧。。哎。。。

没办法了。后来又一番折腾,又发现可疑利用gridview的”分页“功能。将gridview的allowpaging属性设置为true,便可实现自动分页。

触发自动分页的html代码:

<asp:GridView    ID="GridView1" runat="server" style="margin-top: 0px" 
                        AllowSorting="True" BackColor="LightGoldenrodYellow" BorderColor="Tan" 
                        BorderWidth="1px" CellPadding="2" GridLines="None" SelectedIndex="0" 
                        Width="941px" ForeColor="Black" AllowPaging="True" 
                        OnPageIndexChanging= "gv_show_PageIndexChanging">
其中:
OnPageIndexChanging= "gv_show_PageIndexChanging"
意味着当分页的页码发生变化时,触发相应的事件

相关的脚本事件:

Protected Sub gv_show_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)

        GridView1.PageIndex = e.NewPageIndex
        Dim myConn As MySqlConnection = New MySqlConnection("连接数据库代码")
        myConn.Open()
        Dim ad As MySqlDataAdapter = New MySqlDataAdapter("取数据", myConn)
        Dim ds As New DataSet
        ad.Fill(ds)

        Dim dt As New Data.DataTable
        dt.Columns.Add("文件名称")
        For i = 0 To ds.Tables(0).Rows.Count - 1
         
            dt.Rows.Add(ds.Tables(0).Rows(i).Item(1).ToString)
        Next
‘为了使得每页显示相同的记录数,如果记录不够,自动以空记录补足        
For i = 1 To GridView1.PagerSettings.PageButtonCount - (ds.Tables(0).Rows.Count Mod GridView1.PagerSettings.PageButtonCount)
            dt.Rows.Add("")
        Next
        GridView1.EnableSortingAndPagingCallbacks = False
        GridView1.DataSource = dt
        GridView1.AutoGenerateSelectButton = True
        GridView1.DataBind()

        Dim iii As Integer = GridView1.Rows.Count

    End Sub
上述代码即重新绑定gridview的数据内容即可,无须设置从第几条记录重新显示








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值