2012-03-01 14 views
0

私は一週間近く私の側に棘がある問題があります。私は、ユーザーがアカウントを作成し、データベースから選択したビデオを読み込むことができるサイトを持っています。私は彼らが選んだものを見て、そこにビデオがある特定の順序で現れるようにしたいと思います。私の問題は、ビデオがランダムな順序で表示されることです。私はこれが基本的かもしれないことは分かっていますが、私はちょうどエントリーレベルです(私は卒業して2週間しか経っていません)。すべての機能が動作するので、必要なヘルプはありません。データバインドされたアイテムを並べ替える方法

仕様: C#ASP.NETでコードされています チェックボックスリストを使用して選択範囲を追加および削除します。 私はバックエンドでビデオを追加したり削除したりできるようにデータアイテムを持っています。

これは、マイナス投票を得るかもしれないと私は知っていますが、私はそれが好まれませんが、私はこの問題に関していくつかの助けが必要です。あなたがコードを持っていないことを私に叫ぶ前に、あなたが見たいものを教えてください。そうすれば、無駄なコードがたくさん追加されることはありません。

私は短くしようとしていない、むしろ私が試したすべてがうまくいかないと不満を抱いています。

ありがとうございます。 EDIT

:ここ はそれのためにSqlDataSourceです:

<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
    ConnectionString="<%$ ConnectionStrings:fivideoConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:fivideoConnectionString.ProviderName %>" 

    InsertCommand="INSERT INTO dealervideo(DealerRecID,VideoRecID) VALUES (?,?)" 
    DeleteCommand="DELETE FROM dealervideo where RecID = ?" > 
     <DeleteParameters> 
      <asp:SessionParameter Name="recid" SessionField="videorecid" /> 
     </DeleteParameters> 
     <InsertParameters> 
      <asp:ControlParameter ControlID="hidRecID" Name="recid" PropertyName="Value" /> 
      <asp:SessionParameter Name="videorecid" SessionField="videorecid" /> 
     </InsertParameters> 

</asp:SqlDataSource> 

そして、ここでGridViewのです:

<asp:GridView ID="GridView2" runat="server" 
     DataSourceID="SqlDataSource2" AutoGenerateColumns="False" 
     DataKeyNames="RecID" CellSpacing="5" BorderStyle="None" BorderWidth="0px"> 
    <Columns> 
     <asp:TemplateField HeaderText="Delete"> 
      <ItemTemplate> 
       <asp:CheckBox ID="cbDelete" runat="server" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />   
    </Columns> 
    </asp:GridView> 

そして、これは、彼らがリストに動画を追加するためにクリックイベントです。

protected void btnAddVideo_Click(object sender, EventArgs e) 
{ 
    foreach (GridViewRow gvr in GridView3.Rows) 
    { 
     CheckBox chkItem = (CheckBox)gvr.FindControl("cbAdd"); 
     if (chkItem.Checked) 

     { 
      String sRecID = GridView3.DataKeys[gvr.RowIndex].Value.ToString(); 
      Session["videorecid"] = sRecID; 
      SqlDataSource2.Insert(); 
      SqlDataSource2.SelectCommand = "SELECT * FROM dealervideo inner join videos on videos.RecID = dealervideo.VideoRecID inner join dealers on dealers.RecID = dealervideo.DealerRecID where dealers.RecID = " + hidRecID.Value; 

     } 
    } 
    GridView2.DataBind(); 
+0

?あなたはどのようにビデオのデータを取得しますか? – Oded

+0

あなたのSelectCommandはどこですか? – Khan

+0

ボタンをクリックします。動画はユーザーごとに正しく引き出され、正しい順序で表示されません。私は1つを欠いていますか? – Peter

答えて

1

Select Commandと注文するフィールドに「ORDER BY」を追加します。

例:あなたは、これらを持つようにしたいんどのような順序

SqlDataSource2.SelectCommand = "SELECT * FROM dealervideo inner join videos on videos.RecID = dealervideo.VideoRecID inner join dealers on dealers.RecID = dealervideo.DealerRecID where dealers.RecID = " + hidRecID.Value + " ORDER BY videos.RecID"; 
0

私は、ストアドプロシージャまたはsqlコンマの結果にバインドしていると仮定しますnd?その場合、SQLステートメントに「Order By」句を使用しないでください。アイテムは、データベースから取得された順に表示されます。

+0

私は同意し、私はそれを試みたが、まだ何も。私は別のテーブルでいくつかの結合をしなければならなかったので、それは問題を引き起こす可能性がありますか? – Peter

+0

いいえ、結合によって注文に問題が生じてはいけません。どのようにストアドプロシージャを呼び出すのですか? – coltech

+0

元の質問にコードを追加しています... – Peter

関連する問題