2017-07-25 13 views
0

vb.net 4.5とTelerik 2017.2.711.45(Q2)を使用しています 私はradgridフィルタ式とパブリック文字列変数を取得しようとしています。しかし、公共の文字列変数(STRINGVAR)EnableViewState=FALSEEnableViewStateが値の損失を引き起こしました

は、radgridフィルタ式ががポストバックを通じて維持されない、は持続しません。

私はが持続んradgrid EnableViewState=TRUEフィルタ式を設定すると、しかし、それはにSTRINGVARが発生しない持続します。

私がViewStateを理解してから、EnableViewState=TRUEを設定すると、stringVarがポストバックを超えて持続しなくなるという意味はありません。私はなぜこれが起こっているのか、これを解決するために何ができるのかを知りたいです。

EDIT: 強調表示された行は、ReportTitleに値が存在しないためにエラーがスローされる場所です。ビューステートを使用

Partial Class displayxslgrid 
    Public ReportTitle As String 
    Public ReportsDB As reportDataBase 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Page.EnableViewState = True 
     Reports = New reportDataBase.Global_Functions(System.Web.HttpContext.Current) 

    End Sub 

    Protected Sub RadGrid1_NeedDataSource(sender As Object, e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles RadGrid1.NeedDataSource 
     Call BindRadGrid1() 

    End Sub 

    Protected Sub RadGrid1_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.ItemCommand 
     Dim strReportTitle As String 

     Select Case e.CommandName 
      Case RadGrid.ExportToExcelCommandName, RadGrid.ExportToWordCommandName, RadGrid.ExportToCsvCommandName 

strReportTitle = ReportTitle.Trim

 End Select 

    End Sub 

    Public Sub BindRadGrid1() 
     Dim strReportTitle As String 
     Dim dt As DataTable = Nothing 

     ReportTitle = dt.Rows(0).Item("ReportTitle") 
     strReportTitle = dt.Rows(0).Item("ReportTitle").ToString 
     'RadGrid1 Data source gets set here along with other stuff 

    End Sub 
End Class 

答えて

2

正常であり、Telerikコントロールは後背中を横切ってそれらの値を保持するためにそれを必要とします。ページクラスのパブリック文字列プロパティは永続的ではなく、毎回設定/計算する必要があります。永続するようなものが絶対必要な場合は、隠しサーバーコントロールに値を保存するか、URLのQueryStringに値を設定します。

+0

隠しフィールドはスマートな解決策であり、この時点では私が使用するものだと思っていますが、ビューステートが有効になっていなければ文字列はそのまま残ります。ビューステートを有効にすると、それが永続しないようにする理由は何ですか?その価値を失う可能性のある追加のイベントを発生させますか? – FreakinRocket

+0

妥当な振る舞いであるとは言えませんが、私はなぜそれが頭の上に残っているのかわかりません。問題を示すコードを投稿できますか? – Seano666

+0

編集済み、コードビハインドが追加されました。 – FreakinRocket

0

それで、その変数は本当にではないことがわかりました。それはbindradgrid1からその価値を得ていました。 EnableViewState=True必要なデータソースイベントが発生しない場合、bindradgrid1は呼び出されず、変数は値を取得しません。簡単な修正では、項目コマンドsubにbindradgrid1()を追加して、EnableViewState=Trueであってもbindradgrid1()が呼び出されるようにしました。助けてくれたすべての人に感謝します。

関連する問題