- ベストアンサー
C#+ASP.NETでwebサイト
C#+ASP.NETでwebサイト 以下のようなwebサイトを作っています。 (1)webブラウザでサイトに接続 (2)文字列をテキストボックスに入力 (3)その文字列をキーにして、データベースのあるテーブルを検索し、 ヒットした全件をブラウザに表示。 (列の数は合計で6列あります。行は1000行程度の見込みです。) (4)操作対象の行を選択し、その行の2列目のみをテキストファイルに出力、その行をDBから削除。 時間がなく、また知識、経験不足のため困っています。 サンプルソースや、ヒントだけでも良いので教えて下さい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
SqlDataSourceとGridViewを使うのが良いでしょう。 データソースはスキーマの構成を行う時、SELECTと DELETEのSQLを記述します。DELETEのSQLは下記を 参照してください。 DELETE FROM table WHERE key=? また、DeleteQueryで対象となるキー項目を定義します。 と言っても画像なしでは分かり難いので、結果だけを 下記に掲示します。 <DeleteParameters> <asp:Parameter DbType="String" Name="Key" /> </DeleteParameters> これをSqlDataSourceタグの内側に置きます。 データソースを使うGridViewの方は「スキーマの更新」を 実行し、「列の編集」で、「削除」を追加します。 更に、これをTempleteFieldに変換します。こうすると、 以下のタグが生成されるので、クリック時の確認を埋め込み ます。 <ItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" ommandName="Delete" Text="削除" OnClientClick="return confirm('★')"> </asp:LinkButton> </ItemTemplate> ★の所には適当に削除確認メッセージを入れます。 検索の要領 (1)サーバ側で検索を実行すべきは検索ボタンクリック時の他、 Page_Loadでも必要です。 (2)検索時の処理 データソースのFilterExpressionプロパティに条件を指定 します。 if (Cond.Text == "") { DataSource.FilterExpression = ""; } else { DataSource.FilterExpression = "key='" + Cond.Text.Replace("'","''")+ "'"; } (3)バインド 上記フィルターを設定しただけでは何も起きませんので、 GridViewの方にBindを実行します。 Grid.Bind(); 但し、Page_Loadイベント時は自動的にBindされるので、 この操作はスキップします。(フィルタ設定まででOK) 削除時の要領 削除だけなら何もコーディングしないのですが、2列目を 取得するための操作が必要です。 (1)データソースのDeletingイベントを作成する。 (2)上記イベントの処理 string joken = ""; IDictionaryEnumerator n = GridView1. SelectedPersistedDataKey. Values.GetEnumerator(); while(n.MoveNext()) { if (joken != "") joken += " AND "; joken += n.Key + "='" + n.Value + "'"; } ※キー項目が文字列と仮定しています。数値の場合は 'は不要です。 これでWHERE句を形成し、対象レコードを抽出して ファイルへの出力を行います。