• ベストアンサー

Gridviewの並べ替えについて

SqlDataSourceを設定したGridviewを作成しました。 GridviewのAllowSortingは"true" を設定し、ユーザが並べ替えできる設定にしました。 再表示ボタンをクリックすると、ユーザが行った並べ替えをクリアし、 Gridview読み込み時の初期状態の並び順に戻したいのですが、 ボタンのクリック時にどのように記述すればよろしいですか? GridviewをDataBindしたのですが、ユーザーがクリックした列の並び替えが初期化されません。 ご教授お願いします。

noname#208236
noname#208236

質問者が選んだベストアンサー

  • ベストアンサー
  • WebSurfer
  • ベストアンサー率55% (33/59)
回答No.2

[再表示ボタン]の Click イベントのハンドラで、以下のようにした らどうですか? protected void Button1_Click(object sender, EventArgs e) { GridView1.Sort("", SortDirection.Ascending); }

その他の回答 (1)

noname#259269
noname#259269
回答No.1

SQL で設定したのと同じソート条件を指定してください。

関連するQ&A

  • ASP.Net GridView DataBind

    お世話になります。 FormView の中に いくつかのコントロールと ボタンとGridView を配置しております。 ボタンを押すと、GridView のレコードが追加するような UpDate文を実行するようになっています。 GridViewのデータも一緒に新しいデータとともに表示を更新させたいと思うのですが、 GridView の DataBindメソッドをどうやって呼び出していいかわかりません。 名前は GridView1 なのですが、Button1_Click メソッドの中で、GridView1 の候補が出ないですし、 どうやって定義して、実行すればいいのかわかりません。 何卒よろしくお願い申し上げます。

  • 【ASP.net】SqlDataSourceについて

    【ASP.net】SqlDataSourceについて index.aspxページにSqlDataSource1とGridView1と検索ボタンをセットし、 検索ボタンが押されると、SqlDataSource1にセットしているSQLにWHERE文を 追記して、GridView1を再表示させたいのですが、どのようにすれば良いのでしょうか? 現在のソースです・・・。 Dim Str As String = SqlDataSource1.SelectCommand Dim StrSql As String = "" StrSql = " WHERE lbl = ららら " Str = Str & StrSql SqlDataSource1.SelectCommand = Str GridView1.DataSource = SqlDataSource1.SelectCommand GridView1.DataBind() この状態だと、SQL文がBindされてしまい、DBから値がとれません。 解る方いらっしゃいましたらご教授お願いします。

  • GridViewのButtonフィールドの使い方

    環境:visual web develper 2008 Express Edition GridViewタスク→列の編集→フィールド→「使用できるフィールド」からButtonFieldを選択→Button Typeを「Button」に設定、Textは「削除」→「OK」を押す 以上の流れで削除ボタンの列がGridView内に表示されますが、「削除ボタン」を押しても何も起こりません。 削除ボタンをクリックされたときにこちらが決めた処理を行わせるにはどうすればよいでしょうか? ツールボックスのButtonですと、 Protected Sub sakujyo_Click(ByVal sender As Object, ByVal e As EventArgs) Handles bookNameSyoujyun.Click    End Sub でボタン(sakujyoボタン)を押したときの処理がかけますが、このような書き方はできないのでしょうか? 現状だとGridView内にあるボタンのIDがわからないため、○○○_Clickの○の部分に何を書けばいいのかわかりません。 ご助言よろしくお願いいたします。。

  • ASP.NET GridView の検索画面でのページング操作処理について

    ASP.NET・WindowsXP・ACCESS2003DB・ 2005ExpressEdition 検索画面を作成しましたがうまく動作しません教えてください。 1.条件入力用のテキストボックス幾つか作成。 2.検索ボタンを作成。 3.GridViewに上記の条件でSqlDatasourceより   データを表示できました。 4.1ページの件数10件を遥かにが多いため   GridView下段にページ番号が表示される 5.ページ番号をクリックすると、全データが表示   される。 条件入力した値でのSQL文のルーチンを通っていない 為と思われるが、GridView下段にページ番号を クリックしたときのイベントに条件ルーチンを 挿入したいのですが教えて頂けますでしょうか よろしくお願いいたします。

  • UpdatePanel と GridViewについて教えてください

    現在、ASP.NET(VB)にて開発を行っています。今悩んでいる事は GridView内でUpdatePanelを使用した際にエラーが表示されます。 エラー内容は下記の通りです。 InvalidCastException はユーザーコードによってハンドルされませんでした。 ______________________________________________________________________ 型 'System.Web.UI.UpdatePanel' のオブジェクト型 'System.Web.UI.WebControl.GridViewRow' にキャストできません。 どなたか、エラーの対処方をご存知の方がいらっしゃいましたらご指導宜しくお願いします。なお、ソースは下記の様に記述してみました。 <%@ Page Language="VB" %> <%@ Import Namespace="System.Data.SqlClient" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> Protected Sub TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Dim txt As TextBox = DirectCast(sender, TextBox) Dim row As GridViewRow = DirectCast(txt.Parent.Parent, GridViewRow) CD.Text = txt.Text End Sub </script> <html> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="SM" runat="server"> </asp:ScriptManager> <asp:TextBox ID="CD" runat="server" Width="50px"></asp:TextBox> <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="CD" DataSourceID="Source" ShowFooter="True"> <Columns> <asp:TemplateField HeaderText="CD"> <ItemTemplate> <asp:Label ID="lbl" runat="server" Text='<%# Bind("CD") %>'></asp:Label> </ItemTemplate> <FooterTemplate> <asp:UpdatePanel ID="UP" runat="server"> <ContentTemplate> <asp:TextBox ID="NewCD" runat="server" AutoPostBack="True" OnTextChanged="TextChanged" Width="50px"></asp:TextBox> </ContentTemplate> </asp:UpdatePanel> </FooterTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:SqlDataSource ID="Source" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStrings %>" SelectCommand="SELECT * FROM [TABLE]" ProviderName="System.Data.SqlClient"> </asp:SqlDataSource> </form> </body> </html>

  • サブフォームの並べ替えをしたい

    どうしても出来ないのでお知恵をお貸しください。 【1】「オートフォーム:データーシート」で、テーブル1を紐付けて、 子フォームを作成しました。 【2】「デザインビュー」で親フォームを作り、 その子フォームをドロップアンドドラッグしてサブフォームにしました。 【3】親フォームにコマンドボタンを一つ設置しました。 (図参照) 【4】コマンドボタンのイベントプロシージャーに Private Sub コマンド1_Click() Forms("親").Controls("子").Controls("入金").SetFocus DoCmd.RunCommand acCmdSortAscending '昇順並べ替え End Sub とコードを書きました。 そして、親フォームを開き、コマンドボタンを押すと、 実行時エラー2046 「コマンドアクション"昇順で並べ替え" は無効です」 となってしまいます。 しかし、図のように 子フォームのデータシート上のどれかの値にフォーカスがある状態で 標準モジュールに書き写した Sub test1() Forms("親").Controls("子").Controls("取引日").SetFocus DoCmd.RunCommand acCmdSortAscending '昇順並べ替え End Sub を実行すると 問題なく並び替えがされます。 RunCommand を使わなくてもいいので 「コマンドボタンを押したら、サブフォームの並び替えをする」には どうすればいいのでしょうか。 ご教授よろしくお願い致します。(アクセス2003)

  • フォルダの並べ替えでとても困っています(画像あり)

    vistaから7に変更したのですが、フォルダの並べ替えがとても面倒になってしまいました。 写真のフォルダなどは「大アイコン」で表示しているのですが、vistaの時は「名前」や「撮影日」をクリックするだけで並べ替えできたのですが、7だとその表示がなく、いちいち右クリックからやらないといけないのですが、設定で変更できないのでしょうか?

  • データソースの非活性化について

    Visual Web Developer を初めて使うのですが、どうも使い勝手が判らず困っています。 データベースの値をGridViewに表示するために、sqlDataSourceにSQLを書いて表示するまではわかったのですが、初期画面で、sqlDataSourceを非活性化(定義してあるデータのアクセスを止める)することはできないのでしょうか? AccessだとActivateというようなプロパティがあって、ボタンを押すなどのタイミングで活性化、非活性化をすることができたような記憶があるのですが、Visual Web Developer ではこのようなプロパティ、メソッドはあるのでしょうか? 初歩的な質問だと思いますが、ネットを調べても判らなかったので教えて頂ければ幸いです。

  • Excel2010の並べ替えで行の高さを維持したい

    EXCEL2010の並び替えでは、その行の行の高さを変えないで並び替えはできないでしょうか。セル内の日本語メモが全部印刷されるように高さを調整しても、並べ替えすると調整し直しになって困ってます。 Excelの[オプション] → [詳細設定] → [挿入したオブジェクトをセルと共に切り取り、コピー、並べ替えを行う] チェック しております。また、シート全体を指定(ctl-Aでも左上隅クリックでも)しても、高さが変わってしまいます。 新しいBookのシートにコピー(ctl-a 、ctl-cしてctl-v貼り付けですが)してもダメなようです。 並べ替え前後を比べると、行の高さは並べ替え前の行のそれが維持されるように見えています。並べ替え前の行aが10なら、並べ替え後の行aが10になるようです。

  • GridViewからの値を全件LOOPして取得したい

    GridViewについて教えてください。 <環境>ASP.NET データソースにSQLDataSourceを指定し、GridViewに全件を自動バインドして表示しています。 画面上に設置したボタン押下のイベントハンドラで、そのGridViewの全行をループして各列の値を参照したいのですが、 以下のようなに記述しても(1)の部分でNOTHINGとなりエラーになります。 どのようにすればよいでしょうか? やりたいことは、GridView全行ループし、ITEMKINDの値が"1"の時、TemplateField内にあるtxtNVERCHARの値を取得することです。 ご教授お願いします。 --------------------------------- <Columns> <asp:BoundField DataField="ITEMKIND" HeaderText="ITEMKIND" Visible="False" /> </asp:BoundField> <asp:TemplateField HeaderText="ITEM"> <ItemTemplate> <asp:TextBox CssClass="txtstr" ID="txtNVERCHAR" runat="server" Text='<%# Bind("ITEM_NVERCHAR", "{0}") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> </Columns> --------------------------------- Protected Sub 更新_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExec.Click For Each row As GridViewRow In grdList.Rows Dim strITEMKIND As TextBox = DirectCast(row.FindControl("ITEMKIND"), TextBox)  ←(1) IF strITEMKIND.Text = "1" THEN Dim strDDL As TextBox = DirectCast(row.FindControl("txtNVERCHAR"), TextBox) End IF Next End Sub

専門家に質問してみよう