单击按钮时看不到Gridview

时间:2013-10-31 09:34:49

标签: c# asp.net vb.net gridview

我试图通过在sql命令中传递不同的查询来在三个按钮单击事件上显示相同的网格。

                <table style="width:100%;" cellspacing="2" class="Text">
                    <tr>
                        <td align="left" colspan ="2">
                            <asp:Button ID="btnreport1" runat="server"
                                     Text="Report1" Width="104px"
                                     OnClick ="btnreport1_Click1"/>
                        </td>
                    </tr>                         
                </table>
                            <tr>
                        <td>
                            <asp:GridView ID="GridView1" runat="server" 
                            AutoGenerateColumns="True" AllowPaging="True"
                                 AllowSorting="True">
        </asp:GridView>

VB代码

Protected Sub btnreport1_Click1(sender As Object,
                        e As EventArgs) Handles btnreport1.Click
        Using conn1 As New SqlConnection(ConfigurationManager.ConnectionStrings(
                         "TERAMSConnectionString").ConnectionString)
            conn1.Open()
            Dim cmd2 As SqlCommand =
               New SqlCommand("select * from AssetsHardware_Master ,
                               Desktop where Serial_no !=SerialNo", conn1)
            Dim dr As SqlDataReader = cmd2.ExecuteReader
            Dim dt As DataTable = New DataTable
            dt.Load(dr)
            GridView1.DataSource = dt
            GridView1.DataBind()
        End Using
    End Sub

4 个答案:

答案 0 :(得分:2)

这里你不能调用绑定网格视图的方法

在设计视图中OnClick ="btnreport1_Click1"

并在代码背后Button1_Click()

这就是为什么它不会在网格视图中显示结果

答案 1 :(得分:0)

WHERE - 条款中的条件不正确:

where Serial_no != SerialNo

这至少会返回任何内容,因为没有Seri​​alNo本身!=(它与where 1=2相同)。

我假设你想使用参数化查询:

Dim cmd2 As SqlCommand = New SqlCommand("select * from AssetsHardware_Master ,Desktop where Serial_no != @Serial_no", conn1)
cmd2.Parameters.AddWithValue("@Serial_no", SerialNo) 

这里SerialNo是一个变量,如果它是一个静态字符串SerialNo

cmd2.Parameters.AddWithValue("@Serial_no", "SerialNo") ' presuming varchar column

答案 2 :(得分:0)

copypaste错误?

你的按钮:

<asp:Button ID="btnreport1" runat="server" Text="Report1" Width="104px" 
            OnClick ="btnreport1_Click1"/>

你的方法声明:

 Protected Sub Button1_Click(sender As Object, e As EventArgs) _ 
     Handles Button1.Click

你的方法永远不会被使用,试试这个:

<asp:Button ID="Button1" runat="server" Text="Report1" Width="104px"/>

或者这个:

Protected Sub btnreport1_Click1(sender As Object, e As EventArgs)

答案 3 :(得分:0)

我在您的代码示例中发现了一个问题。您按钮控件ID是“btnreport1”,但您的按钮单击事件处理程序处理名为“Button1.Click”的不存在的控件ID。为了使事件处理程序能够处理按钮中的click事件,必须将其handle子句更改为:


Protected Sub Button1_Click(sender As Object, e As EventArgs) _
    Handles btnreport1.Click

您还可以创建一个处理许多按钮点击的处理程序......


Protected Sub Button1_Click(sender As Object, e As EventArgs) _
    Handles btnreport1.Click, _
    Handles btnreport2.Click, _
    Handles btnreport3.Click, _
    Handles btnreport4.Click

关于称为“AutoEventWireup”的功能...在每个ASPX页面的顶部,在Page Declaration中,有一个名为“AutoEventWireup”的属性。这设置为true或false。使用true设置时,ASP.NET会自动将按钮和其他控件连接到事件处理程序。例如,名为“MyButton”click事件的控件将自动绑定到事件处理程序名称“MyButton_Click”。使用false设置时,必须使用“... Handles MyButton.Click”子句向事件处理程序显式“连接”按钮。

无论您是否使用AutoEventWireup,您的代码示例将永远不会起作用,因为控件ID和句柄声明不匹配。