2017-06-28 10 views
0

グリッドにソートを適用しようとしていますが、ページが読み込まれたときにデータをソートするために2回のクリックが必要です。したがって、ページが読み込まれます。 任意の列の最初にクリック) - >何ページが再び再ロードされたら、それはクリックの任意の数のために動作しますdata.Andをソートします任意の列にをクリックして並べ替えませんが、私は2番目のaspグリッドで2回クリックするとデータがソートされます

さわやかページを参照してください。

ASPX:背後に

<asp:GridView id="SubGrid" runat="server" AutoGenerateColumns="False" 
      CellPadding="15" AllowPaging="True" PageSize="20" AllowSorting="True" 
      EmptyDataText="There are now submission to display." 
      ShowHeaderWhenEmpty="True" DataKeyNames="SubmissionID,Abstract,info,upload,finalized,Submitter" 
      OnRowCreated="SubGrid_RowCreated" OnRowDataBound="SubGrid_RowDataBound" DataSourceID="SqlDataSource1"> 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringTest %>" SelectCommand="sb_Getvelue" SelectCommandType="StoredProcedure"> 
     <SelectParameters> 

コード:私は2つの方法

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    End Sub 

Protected Sub SubGrid_RowCreated(sender As Object, e As GridViewRowEventArgs) 
----Some Custom Code to add a extra line on top of the grid. 
End Sub 

Protected Sub SubGrid_RowDataBound(sender As Object, e As 
GridViewRowEventArgs) 
----- Some code to add tool tip ---- 
End Sub 

答えて

0

私はこの問題の解決策を見つけました。ここに私の思考と論理があります。私が間違っている場合は教えてください。

データはSqlDataSourceでバインドされ、SelectCommandTypeはストアドプロシージャです。私のストアドプロシージャは、すでに(私の最初の列である)IDでソートされた結果を返します。今私が見つけたのは、 "ID"列を最初に試してみると、すべての列に対してソートがうまく動作することです。また、データをソートする列をクリックすると、myGrid.SortExpression alwasyは空白の値を返します。だから、私はグリッドがすでにIDで列挙されていると思ったので、私はID列を最初にクリックするとASC順序でグリッドをソートします。

ので、私はそれがDESCでグリッドを並べ替える初めてID欄をクリックしたときに、これは今、ページのロード時ASC順でグリッドを初期化しますPage_Loadの中

If IsPostBack = False Then 

      If String.IsNullOrEmpty(myGrid.SortExpression) Then 
       myGrid.Sort("SubmissionID", SortDirection.Ascending) 
      End If 
     End If 

をこのコードを追加しました注文。ページロード時にグリッドのソート順を初期化すると、私のために働きました。

0

を持って後ろにコードで

私は、C#でVBと同等のかわからないイムを同様の問題がありましたそれが役立つかどうかはわかりませんが、あなたのページの読み込みであなたのポストバックをチェックしてください。

私はこれを追加すると、後続の呼び出しは、最初のクリックを働いたのPage_Load

if(!IsPostBack) 

を追加する必要がありました。

希望します。

+0

私が見つけたのは、最初の並べ替えのための最初の列をクリックするとき、myGrid.SortExpressionは常に空白の値です。私は2番目の時間をクリックすると、それは私に正しい値を与えます。だから私は "IsPostBack = False" ifステートメント内のページロードメソッドで私のグリッドの順序を設定することになります。私は最初にページが読み込まれるときに、グリッドの並べ替え順序を初期化すると思います。このグリッドを実行した後はソートが正常に動作するようになります。私は以下のソリューションを追加しました。 – Arpan

関連する問題