2011-05-16 3 views
0

Visual Studio 2008 Shell 및 SQL Server 2008을 사용하고 있습니다. 현재 DataGrid를 표시 할 수 있습니다. 그러나 이제는 열 중 하나에서 텍스트 검색을 사용해야하는 새로운 요구 사항이 생겼습니다. 어떻게 구현할 수 있습니까? 온라인에서 찾은 솔루션을 구현하려했지만 오류가 계속 발생합니다. 부드럽게하십시오. 나는 초보자 VB.Net 프로그래머이다!DataGrid에서 검색 버튼을 만드는 방법은 무엇입니까?

그리고 이것은 셸 판이며 원본 데이터가 직접 액세스 할 수없는 다른 컴퓨터에 있기 때문에 전혀 디버깅 할 수 없습니다.

다음은 내 모든 코드입니다. 현재 몇 가지 오류가 있으므로 ASPX 페이지로 볼 수도 없습니다. 내가 개발할 때 나에게 URL이나 몇 가지 간단한 팁을 줄 수 있습니까? 감사! 당신은 아마 인수로 검색 문자열을 받아 들일 것입니다 GlobalFunctions.GlobalF.FillSparePartsTable(1, SearchString)하는 기능 과부하를 만들어야합니다

<%@ Page Language="VB" Debug="true" Src="../Global.vb"%> 
<%@ Import Namespace="ChartDirector" %> 
<%@ Import Namespace="System.Data" %> 
<%@ Import Namespace="System.Data.OleDB" %> 
<%@ Import Namespace="System.Math" %> 
<%@ Import Namespace="system.data.SqlClient" %> 
<%@ Import Namespace="System.Web.UI.WebControls" %> 
<%@ Register TagPrefix="chart" Namespace="ChartDirector" Assembly="netchartdir" %> 

<html> 
    <SCRIPT LANGUAGE="VB" RUNAT="Server"> 
     Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs) 

      If Not IsPostBack Then 
       Main() 
      Else 
       If part_transfer.Value.Trim() <> "" Then 
        'ShowChart() 
        Panel1.Visible = False 
        Panel2.Visible = True 
       End If 
      End If 


     End Sub 

     Dim DSTableData As New System.Data.DataSet 


     Sub Main()   
      '------------------------- Query database and get arrays for the chart and bind query results to datagrid ----------------------------------------                

      If check1.Checked Then 
       DSTableData = GlobalFunctions.GlobalF.FillSparePartsTable(1) 
      Else 
       DSTableData = GlobalFunctions.GlobalF.FillSparePartsTable(0) 
      End If 

      Me.Button1 = New System.Web.UI.Control 
      Me.TextBox1 = New System.Web.UI.Control 

      dgTable.DataSource = DSTableData 
      dgTable.DataBind() 

     End Sub 

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
      For i As Integer = 0 To DSTableData.Tables(0).Rows.Count - 1 
       If dgTable.Items(i).ToString = TextBox1.Text Then 
        Me.dgTable.SelectedItem(i) 
        Me.dgTable.SelectedIndex(i) 
        Exit Sub 
       End If 
      Next 
     End Sub 

     Sub ScrollToRow(ByVal row As Integer) 
      If Not Me.DataBind(row) Is Nothing Then 
       Me.GridVScrolled(Me, New ScrollEventArgs(ScrollEventType.LargeIncrement, row)) 
      End If 
     End Sub 

     Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) 
      If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then 
       Dim thepriority As Integer 

       If e.Item.Cells(7).Text = "&nbsp;" Then 
        thepriority = 3 
       Else 
        thepriority = e.Item.Cells(7).Text 
       End If 

       Dim thecolor As String 

       If thepriority = 1 Then 
        thecolor = "Red" 
       Else 
        If thepriority = 2 Then 
         thecolor = "Yellow" 
        Else 
         thecolor = "Green" 
        End If 
       End If 
       Dim i As Int16 

       If thepriority = 1 Then 
        For i = 0 To 6 
         e.Item.Cells(i).BackColor = System.Drawing.Color.Red 
        Next 
       Else 
        If thepriority = 2 Then 
         For i = 0 To 6 
          e.Item.Cells(i).BackColor = System.Drawing.Color.Yellow 
         Next 
        Else 
         For i = 0 To 6 
          e.Item.Cells(i).BackColor = Drawing.Color.LightGreen 'System.Drawing.Color.Green 
         Next 
        End If 
       End If 


       Dim itemType As System.Web.UI.WebControls.ListItemType 
       Dim thepart As String = e.Item.Cells(0).Text 
       Dim thepartdesc As String = e.Item.Cells(1).Text 
       itemType = CType(e.Item.ItemType, System.Web.UI.WebControls.ListItemType) 
       If (itemType <> System.Web.UI.WebControls.ListItemType.AlternatingItem) Then 
        e.Item.Attributes.Add("OnMouseOver", "this.style.backgroundColor = '" & thecolor & "';") 
        e.Item.Attributes.Add("OnMouseOut", "this.style.backgroundColor = 'white';") 
        e.Item.Attributes.Add("OnClick", "GetChart('" & thepart & "','" & thepartdesc & "','" & thecolor & "',this);") 
       Else 
        e.Item.Attributes.Add("OnMouseOver", "this.style.backgroundColor = '" & thecolor & "';") 
        e.Item.Attributes.Add("OnMouseOut", "this.style.backgroundColor = '#eeeeee';") 
        e.Item.Attributes.Add("OnClick", "GetChart('" & thepart & "','" & thepartdesc & "','" & thecolor & "',this);") 
       End If 
      End If 
     End Sub 

     Private Sub btnExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExport.Click 
      GlobalFunctions.GlobalF.DataGridToExcel(dgTable, Response) 
     End Sub 

     Sub ReRun_Main(ByVal sender As Object, ByVal e As EventArgs) 
      Main() 
     End Sub 

    </SCRIPT> 
    <script type="text/javascript" language="javascript"> 
     function GetChart(thepart, thepartdesc, thecolor, row) 
     { 
      Form1.part_transfer.value = thepart; 
      Form1.part_desc_transfer.value = thepartdesc; 
      Form1.submit(); 
     } 
    </script> 
    <head> 
     <title></title> 
     <style type="text/css"> 
      .DataGridFixedHeader {background-color: white; position:relative; top:expression(this.offsetParent.scrollTop);} 
     </style> 
    </head> 
    <body> 
     <form runat="Server" method="post" id="Form1"> 
      <div style="font-size:18pt; font-family:verdana; font-weight:bold; color:#336699"> 
       Parts Watch List 
      </div> 
      <hr style="font-weight: bold; font-size: 20pt; color:#000080;" /> 
      <div style="height: 380px; text-align: center; position: static;">    
       <input id="part_transfer" type="hidden" runat="server"/> 
       <input id="part_desc_transfer" type="hidden" runat="server"/> 
       <asp:Panel id="Panel1" runat="server" HorizontalAlign = "Center"> 
         <span style="font-weight: bold; text-align: left; font-size: 15pt;"> 
          Calculation:</span><br /> 
         Reliability Rate &nbsp;=&nbsp; 1 - (number of failed parts in the last 6 months/Part Multiplier * Average instrument Census in the last 6 months),<br /> 
         Where 
         <br /> 
         Number of failed parts - Summation of failures of a part for a 6 month period<br /> 
         Part Multiplier - Number that represents how many times a part is used on the intrument<br /> 
         Average instrument census -&nbsp; Average of the instrument census for the same 
         6 month timeframe as failed parts<br /> 
         <br /> 
         &nbsp; &nbsp; &nbsp; 
         Please choose one of the parts below to view the control charts.</p> 
       </asp:Panel> 
       <asp:Panel id="Panel2" runat="server" Visible="false"> 
        <chart:WebChartViewer id="WebChartViewer1" runat="server" HorizontalAlign="Center" /> 
       </asp:Panel> 
      </div> 
      <hr style="width: 90%; position: static;" /> 

      <div style="text-align: center; position: static; "> 
       <asp:Label id="CensusLastUpdate" runat="server"/><br /> 
       <asp:Button id="btnExport" runat="server" Text="Export to Excel"></asp:Button> 
       <asp:CheckBox id="check1" Text="Display Only Parts Below Threshold" TextAlign="Right" AutoPostBack="True" OnCheckedChanged="ReRun_Main" runat="server" /> 
       <asp:TextBox ID="TextBox1" Text="Enter Part Number" runat="server" /> 
       <asp:Button ID="Button1" Text="Search" runat="server" /> 
      </div> 

      <% Dim scrollPosURL As String = "../includes/ScrollPos.htc" %> 

      <input id="saveScrollPos" type="hidden" runat="server" name="saveScrollPos"/> 
      <table border="0" cellspacing="0" align="center" style=""> 
       <tr> 
        <td> 
         <div persistID="<%= saveScrollPos.UniqueID %>" scrollPOS="<%= saveScrollPos.value %>" style="OVERFLOW: auto; 
          HEIGHT: 400px; BEHAVIOR: url(<%= ResolveURL(scrollPosURL)%>);"> 
          <ASP:DATAGRID ID="dgTable" HorizontalAlign="Center" runat="server" AutoGenerateColumns="False" ShowHeader="True" OnItemDataBound="DataGrid1_ItemDataBound"> 
           <AlternatingItemStyle BackColor = "#eeeeee" /> 
           <HEADERSTYLE CssClass="ms-formlabel DataGridFixedHeader" BackColor = "#336699" ForeColor = "#ffffff" Font-Bold = "true" /> 
           <COLUMNS> 
            <ASP:BOUNDCOLUMN HEADERTEXT="Part No." DATAFIELD="PN" READONLY="true" ItemStyle-Width="130px" ItemStyle-Font-Size="8"/> 
            <ASP:BOUNDCOLUMN HEADERTEXT="Part Desc" DATAFIELD="PART_DESC" READONLY="true" ItemStyle-Width="150px" ItemStyle-Font-Size="8"/> 
            <ASP:BOUNDCOLUMN HEADERTEXT="Number of Failed Parts (last 6 months)" DATAFIELD="numFailed" READONLY="true" ItemStyle-Width="200px" ItemStyle-Font-Size="8"/> 
            <ASP:BOUNDCOLUMN HEADERTEXT="Average Census (last 6 months)" DATAFIELD="AvgCensus" READONLY="true" ItemStyle-Width="215px" ItemStyle-Font-Size="8"/> 
            <ASP:BOUNDCOLUMN HEADERTEXT= "Part Multiplier" DATAFIELD="PartMultiplier" READONLY="true" ItemStyle-Width="100px" ItemStyle-Font-Size="8"/> 
            <ASP:BOUNDCOLUMN HEADERTEXT= "Criticality" DATAFIELD="Criticality" READONLY="true" ItemStyle-Width="100px" ItemStyle-Font-Size="8"/> 
            <ASP:BOUNDCOLUMN HEADERTEXT="Reliabilty Rate" DATAFIELD="ReliabilityRate" READONLY="true" ItemStyle-Width="105px" ItemStyle-Font-Size="8"/> 
            <ASP:BOUNDCOLUMN HEADERTEXT="Priority" DATAFIELD="PRIORITY" READONLY="true" Visible="False" ItemStyle-Width="0px" ItemStyle-Font-Size="8"/> 
           </COLUMNS>    
          </ASP:DATAGRID> 
         </div> 
        </td> 
       </tr> 
      </table> 
     </form> 
    </body> 
</html> 
+0

코드가 표시되지 않습니다. 또한 정확히 무엇을 찾고 있습니까? 열의 텍스트가 검색 문자열과 일치하는 행입니까? – Chad

+0

죄송합니다. 코드를 보여주기 시작했는데 200 줄이 넘으므로 URL/팁을 얻고 코드를 직접 읽는 것이 가장 좋을 것이라고 생각했습니다. 그러나 도움이된다면 기꺼이이 코드를 게시 할 것입니다! 열의 텍스트가 검색 문자열과 일치하는 행을 검색하고 있습니다. – salvationishere

+0

또한 DataGridView를 사용할 수 있으면 좋겠지 만 제 버전이이 기능을 지원하지 않는다고 생각합니다. 그냥 오래된 DataGrid. – salvationishere

답변

0

:

여기 아래에있는 내 코드입니다.

select * from search table where searchcolumn like @Searchstring 

같은 쿼리와 데이터 소스를 생성하고, 파라미터의 어느 한쪽을 퍼센트 (%)를 추가 이심.

그런 다음 검색 버튼 onclick 이벤트에서 새 함수를 호출하고 결과를 바인딩합니다.

관련 문제