【问题标题】:All the data do not fit in the data grid view所有数据都不适合数据网格视图
【发布时间】:2013-02-24 23:58:10
【问题描述】:

我正在尝试开发一个 ASP.NET 页面,该页面将显示我的数据库中的条目。我的查询中有大约 16 列。但是,如果我在代码中使用所有 16 列进行查询,则 GridView 不会显示。

仅当我的查询中的列数不超过 8 列时,它才会出现在页面上。不知道怎么办,谁能帮帮我?

这些是查询的代码示例和填充查询的 bask 端

 <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
        GridLines="None" Width="900px">
        <AlternatingRowStyle BackColor="White" />
        <EditRowStyle BackColor="#2461BF" />
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#EFF3FB" />
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#F5F7FB" />
        <SortedAscendingHeaderStyle BackColor="#6D95E1" />
        <SortedDescendingCellStyle BackColor="#E9EBEF" />
        <SortedDescendingHeaderStyle BackColor="#4870BE" />
    </asp:GridView>

这就是我填充它的方式:

Try
        myconn.Open()
        Dim sqlstring As String = "SELECT a.account_id AS 'No', a.accountid_number AS 'ID', CONCAT(account_name,' ',account_midname,' ',account_surname ) AS 'Student Name', a.account_type As 'Type', l.live_mail AS 'Acount Name' AS 'Password' FROM account a, liveaccount l WHERE a.account_id = l.l_account_id"
        Dim smd As MySqlCommand
        smd = New MySqlCommand(sqlstring, myconn)
        smd.CommandType = CommandType.Text

        Dim da As New MySqlDataAdapter(smd)
        Dim cb As New MySqlCommandBuilder(da)
        Dim ds As New DataSet()
        da.Fill(ds)

        GridView1.DataSource = ds.Tables(0)
        GridView1.DataBind()

        myconn.Close()
    Catch ex As Exception
        myconn.Close()
    End Try

这是有效的查询。如果我再添加一列,它就不会显示:

SELECT a.account_id AS 'No', a.accountid_number AS 'ID', CONCAT(account_name,' ',account_midname,' ',account_surname ) AS 'Student Name', a.account_type As 'Type', l.live_mail AS 'Acount Name' FROM account a, liveaccount l WHERE a.account_id = l.l_account_id"

这个应该可以工作,但如果我插入它,gridView 不会显示:

SELECT a.account_id AS 'No', a.accountid_number AS 'ID', a.account_type AS 'Type', a.account_name || ' ' || a.account_midname || ' ' || a.account_surname  AS 'Student Name', a.account_birthdate AS 'BirthDate', l.gender AS 'Gender', l.position AS 'Position', l.office_department AS 'Office/Department', l.date_created AS 'Date Created', time_created AS 'Time Created', l.office_tel AS 'Tel No', office_localno AS 'Office Tel', l.contact_no 'Cell Phone', l.alternate_email AS 'Other Email', l.classification AS 'Classification', l.registered AS 'Status' FROM account a, liveaccount l WHERE a.account_id = l.l_account_id AND l.registered = 'NOTREGISTERED' AND a.account_deleted = 0 ORDER BY a.account_id Desc;

【问题讨论】:

  • gridview没有列数限制,应该是css的问题,关注一下。
  • 第二次选择验证Student Name列的连接,它与第一次不同,也许你只需要使用CONCAT函数。

标签: asp.net mysql vb.net


【解决方案1】:

您是否在查询运行后验证了您的 DataSet 是否有任何数据?您可以尝试将您的 SQL 粘贴到管理工作室或查询分析器中,看看您的 SQL 代码是否有问题。

另外,您正在使用 try/catch,但没有捕获任何特定异常。我会把它改成这样。这是C#,你应该可以很容易地翻译成VB。

catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString());}

这将显示加载数据时实际发生的情况,以及数据绑定的任何错误。

【讨论】:

  • 我试过了。输出没有任何变化。我相信这与大小有关。如果我增加它出现的大小。但是我不能增加模板边界之外的大小。它会破坏页面。如果有任何方法可以将所有列与 gridView 合并,我会感到很困惑
  • 我试图以这种方式捕捉错误:Page.ClientScript.RegisterStartupScript(Me.GetType(), "ErrorAlert", exmess, True) 它奏效了。日期属性是我输入的问题 dd-mm-yyy 而不是 yyyy-mm-dd
  • 现在一切正常。虽然如果用户输入错误的数据查看器页面将再次关闭。你知道如何在 ASP.net 中使用 dateTimePicker 而不是简单的文本框吗?
  • 来自 MS 的 Ajax Control Extenders 有一个很好的、超级容易实现的日历选择器/弹出窗口。谷歌一下 Ajax Control Extender Calendar,你会发现很多示例。
  • 日历选择器的另一种替代方法是客户端验证:
猜你喜欢
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多