2013-10-31 174 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和句柄聲明不匹配。