2013-10-31 200 views
1

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

   <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 
+0

当我尝试相同的事情作为一个单独的应用程序其工作正常,我从最后三天卡在这里。 – Miank

回答

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) 
+0

是的,谢谢,但即使在更正之后,它不会打我刚创建一个新的应用程序,它仍然无法正常工作,请帮助我。 – Miank

+0

尝试调试它,以便您可以查看数据表是否已填充 –

0

您的WHERE -clause不正确的条件:

where Serial_no != SerialNo 

这将至少任何回报,因为没有的SerialNo为!=本身(这是相同的如where 1=2)。

我asssume要使用参数化查询:

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 
+0

我已经用简单的查询测试过了 - 喜欢 - 从测试中选择* - 它的工作。 – Miank

+0

@miank:现在它工作吗? –

+0

不,当同样的事情尝试新鲜的应用程序它可以工作,但在我的项目中它没有显示出来,是我的vb代码是罚款@tim。 – Miank

2

在这里你可以不调用方法结合了网格视图

设计视图OnClick ="btnreport1_Click1"

和代码隐藏Button1_Click()

这就是为什么它不会显示

+0

这个名字并不重要,他使用的是'Handles Button1.Click'。他没有显示这个按钮,但是,我认为它存在,否则他无法编译。 –

0

我在代码示例中发现了一个问题。您按钮控件ID是“btnreport1”,但您的按钮单击事件处理程序处理名为“Button1.Click”的不存在的控件ID。为了让您的事件处理程序来处理从按钮的Click事件,它的手柄条款必须改成:

 

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页面的顶部,在页面声明中,都有一个名为“AutoEventWireup”的属性。这设置为true或false。使用真实设置时,ASP.NET会自动将按钮和其他控件连接到事件处理程序。例如,名为“MyButton”单击事件的控件将自动绑定到事件处理程序名称“MyButton_Click”。使用false设置时,必须使用“... Handles MyButton.Click”子句明确地将按钮“连线”到事件处理程序。

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