2011-08-03 16 views
0

私はグリッドビューを持っており、セッションを使ってページから編集ページに変数を渡します。番号を検索するまで、これは完全に機能します。グリッドビューで正しいレコードを検索すると、編集をクリックすると間違ったレコードが渡されます。ASP.net Gridview .. something weird

Private Sub gridview1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GridView1.RowEditing 
    Session("wr_id") = GridView1.Rows(e.NewEditIndex).Cells(2).Text & "~\/~" & _ 
       GridView1.Rows(e.NewEditIndex).Cells(3).Text & "~\/~" & _ 
       GridView1.Rows(e.NewEditIndex).Cells(4).Text & "~\/~" & _ 
       GridView1.Rows(e.NewEditIndex).Cells(5).Text & "~\/~" & _ 
       GridView1.Rows(e.NewEditIndex).Cells(6).Text & "~\/~" & _ 
       GridView1.Rows(e.NewEditIndex).Cells(7).Text & "~\/~" & _ 
       GridView1.Rows(e.NewEditIndex).Cells(8).Text & "~\/~" & _ 
       GridView1.Rows(e.NewEditIndex).Cells(9).Text & "~\/~" & _ 
       GridView1.Rows(e.NewEditIndex).Cells(10).Text & "~\/~" 
       Response.Redirect("WorkEdit.aspx") 
End Sub 

GridViewのページ

Protected Sub btnSubmit_Click(sender As Object, e As System.EventArgs) Handles btnSubmit.Click 
    Dim strPost As Boolean = HiddenSearch.Value 
    If strPost = True Then 
     Dim strNumber As String 
     Dim Dropdown As String 
     strNumber = Search_text.Text 
     Dropdown = Search_Field.SelectedValue 
     If Dropdown = "WO#" Then 
      Convert.ToInt32(strNumber) 
     End If 
     Try 
      SqlDataSource1.SelectCommand = "SELECT * FROM [WorkOrderLog] WHERE " + Dropdown + " = '" + strNumber + "' ORDER BY [WO#] DESC" 
      SqlDataSource1.Select(DataSourceSelectArguments.Empty) 
      SqlDataSource1.DataBind() 
      GridView1.DataBind() 
     Catch 
      'output messagebox for debug 
      Dim strPrompt As String 
      strPrompt = "Something bad happened, check search text and try again." 
      Dim strScript As String = "<script language=JavaScript>" 
      strScript += "alert(' " & strPrompt & "');" 
      strScript += "</script>" 
      Search_text.Focus() 
     End Try 
    Else 
     Search_text.Focus() 
    End If 


End Sub 

WORDEDITページ

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    'change submit button on mouseover events 
    Submit_Button.Attributes.Add("onmouseover", "this.src='../images/Submitdown.png'") 
    Submit_Button.Attributes.Add("onmouseout", "this.src='../images/Submitup.png'") 
    'change clear button on mouseover events 
    Clear.Attributes.Add("onmouseover", "this.src='../images/Cancel(down).png'") 
    Clear.Attributes.Add("onmouseout", "this.src='../images/Cancel(up).png'") 
    Call Keypress_ALegal() 
    Call Keypress_ASite() 
    errorWOName.Text = HiddenWOName.Value 
    errorLegalDesc.Text = HiddenLegalDesc.Value 
    errorLocationNumber.Text = HiddenLocationNumber.Value 
    errorDesc.Text = HiddenDesc.Value 
    errorSiteNumber.Text = HiddenSiteNumber.Value 

    If Not Page.IsPostBack Then 

     'Get session info 
     lblID.Text = "Session Variable Was Lost" 
     If (Session("wr_id") <> "") Then 
      Dim strSession As String = Session("wr_id") 
      Dim sessionArray As Array 
      'split session into array at ~\/~ 
      sessionArray = Split(Session("wr_id"), "~\/~") 
      'assign textbox/dropdowns values passed from split variables 
      lblID.Text = sessionArray(0) 
      'WO Name 
      If sessionArray(1) = "&nbsp;" Then 
       WOName.Text = "" 
      Else 
       WOName.Text = sessionArray(1) 
      End If 
      Location.Text = sessionArray(2) 
      'LegalDesc 
      If sessionArray(3) = "&nbsp;" Then 
       LegalDesc.Text = "" 
      Else 
       LegalDesc.Text = sessionArray(3) 
      End If 
      'Trans ADDED 
      If sessionArray(4) = "&nbsp;" Then 
       TransADDED.Text = "" 
      Else 
       TransADDED.Text = sessionArray(4) 
      End If 
      'Trans Retired 
      If sessionArray(5) = "&nbsp;" Then 
       TransRETIRED.Text = "" 
      Else 
       TransRETIRED.Text = sessionArray(5) 
      End If 
      If sessionArray(6) = "&nbsp;" Then 
       Description.Text = "" 
      Else 
       Description.Text = sessionArray(6) 
      End If 
      If sessionArray(7) = "1/1/1900 12:00:00 AM" Or sessionArray(7) = "&nbsp;" Then 
       Started.Text = "" 
      Else 
       Started.Text = (CType((sessionArray(7)), DateTime).ToString("MM/dd/yyyy HH:mm tt")) 
      End If 
      If sessionArray(8) = "1/1/1900 12:00:00 AM" Or sessionArray(8) = "&nbsp;" Then 
       Completed.Text = "" 
      ElseIf sessionArray(8) = "&nbsp;" Then 
       Completed.Text = "" 
      Else 
       Completed.Text = (CType((sessionArray(8)), DateTime).ToString("MM/dd/yyyy HH:mm tt")) 
      End If 
      StakedBy.SelectedValue = sessionArray(9) 

私はそれがあまりにも多くのスペースを取るため、コードのすべてが、ここに貼り付けられません実現しています。何か案は?私はそれがeと関係があると推測しています.NewEditIndex

答えて

0

if、ispostbackステートメントでpageloadをラップしていました。あなたの助けてくれてありがとうrkw。

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    If IsPostBack Then 
     If Search_text.Text = "" Then 
      SqlDataSource1.SelectCommand = "SELECT * FROM [WorkOrderLog] ORDER BY [WO#] DESC" 
      SqlDataSource1.Select(DataSourceSelectArguments.Empty) 
      SqlDataSource1.DataBind() 
      GridView1.DataBind() 
     Else 
     End If 
    End If 
     If Not IsPostBack Then 
      SqlDataSource1.SelectCommand = "SELECT * FROM [WorkOrderLog] ORDER BY [WO#] DESC" 
      SqlDataSource1.Select(DataSourceSelectArguments.Empty) 
      SqlDataSource1.DataBind() 
      GridView1.DataBind() 
     End If 
End Sub 
0

あなたのコードは正常です。 Session( "wr_id")は実際のコードか、 "wr_id"モックアップコードですか?

セッション値に文字列またはインデックスでアクセスできるため、私が尋ねるのは理由です。

  • セッション(「ID」)あなたはSession(selectedID)を使用してコードを持っている場合、セッションは(8)セッションで

を9番目の要素にアクセスします

  • 「ID」キーでセッション変数にアクセスしますそしてselectedIDは人口object変数であり、あなたはselectedIDは、数値または文字列

    Uであるかどうかに応じて、セッション変数にアクセスする方法を変更しますpdate

    コード内の他の場所にバインドしているかどうかを確認してください(例: Page_Loadイベント)。コントロールの編集イベントが発生する前に新しいデータでグリッドを再バインドする可能性があります

  • +0

    セッション( "wr_id")は実際のコードです。セッションには、現在のレコードの文字列が "〜\ /〜"で連結され、ユーザーが "編集"をクリックし、編集ページに転送されます。ここで "〜/〜"で文字列を分割します。問題は、ユーザーが検索したときに送信するインデックス番号が正しくない場合です。 – atrueresistance

    +0

    あなたのコードをもっと投稿しなければならないかもしれません。 GridView_DataBiding(Bound)イベントで何か起こっていますか?またはGridViewの他のイベントが定義されていますか? – rkw

    +0

    検索対象の詳細についてさらに更新をチェック – rkw