質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

6456閲覧

asp.net select結果をDataListに表示する

peng

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2019/06/06 11:11

編集2019/06/06 12:21

前提・実現したいこと

c# asp.netでデータベースの中から利用者の入力したキーワードを含む名前を表示したい。

ここに質問の内容を詳しく書いてください。

webアプリケーションを作っているのですが、データベースに登録した名前からユーザーが入力したキーワードを含む名前だけをDataListを使って表示しようとしています。

1.利用者がキーワードを入力して検索ボタンを押す。

2.selectでキーワードを含む名前を選別

3.select結果をDataListに表示する
という動作を目指しています。

select 名前 from 会員 where 名前 LIKE N'%@kensaku%'
でキーワードを含む名前のselectができるのは、SQLマネージャーで確かめました。
ただこのselectの結果をDataListに表示する方法が分かりません。
よろしくお願いします。

自分の開発環境(windows10, .NETFramework 4.7.2, Visual Studio 2019 ,Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 )

該当のソースコード

HTML

1 2<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="WebApplication6.WebForm1" %> 3<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 4 <link rel="stylesheet" type="text/css" href="StyleSheet5.css"> 5</asp:Content> 6<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 7 <p id="kensaku"> 8 <asp:TextBox ID="TextBox1" runat="server" style="width: 148px"></asp:TextBox> 9 <asp:Button ID="Button1" runat="server" Text="検索" /> 10 </p> 11 12 <div id="gakubuti" style="height: 650px"> 13 <div id="name"> 14 <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" OnSelectedIndexChanged="DataList1_SelectedIndexChanged" Width="186px" ForeColor="#3399FF" RepeatColumns="15" CellPadding="10" CellSpacing="10" Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False" GridLines="Horizontal" HorizontalAlign="Justify"> 15 <HeaderStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False" /> 16 <ItemTemplate> 17 18 <asp:Label ID="名前Label" runat="server" Text='<%# Eval("名前") %>' /> 19 20 </ItemTemplate> 21 <SeparatorStyle BorderStyle="Solid" /> 22 </asp:DataList> 23 24 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:GraveConnectionString %>" SelectCommand="SELECT [名前] FROM [会員]"></asp:SqlDataSource> 25 </div> 26 </div> 27</asp:Content>

c#

1 2using System; 3using System.Collections.Generic; 4using System.Configuration; 5using System.Data.SqlClient; 6using System.Linq; 7using System.Web; 8using System.Web.UI; 9using System.Web.UI.WebControls; 10 11namespace WebApplication6 12{ 13 public partial class WebForm1 : System.Web.UI.Page 14 { 15 protected void Page_Load(object sender, EventArgs e) 16 { 17 18 } 19 20 protected void DataList1_SelectedIndexChanged(object sender, EventArgs e) 21 { 22 23 } 24 25 protected void Button1_Click(object sender, EventArgs e) 26 { 27 // 接続文字列の取得 28 var connectionString = 29 30 ConfigurationManager.ConnectionStrings["GraveConnectionString"].ConnectionString; 31 32 using (var connection = new SqlConnection(connectionString)) 33 34 using (var command = connection.CreateCommand()) 35 { 36 try 37 { 38 39 // データベースの接続開始 40 connection.Open(); 41 42 // SQLの準備 43 command.CommandText = @"select 名前 from 会員 where 名前 LIKE N'%@kensaku%';"; 44 command.Parameters.Add(new SqlParameter("@kensaku", TextBox1.Text)); 45 46 // SQLの実行 47 command.ExecuteNonQuery(); 48 49 50 } 51 catch (Exception exception) 52 { 53 54 throw; 55 } 56 finally 57 { 58 // データベースの接続終了 59 connection.Close(); 60 61 } 62 } 63 } 64 65 66 } 67 68}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/06 11:47

コードは ``` と ``` で囲ってください。インデントされて見やすくなるので。閲覧者に見てもらえないと話が始まらないので見てもらえる努力をしましょう。 あと、自分の開発環境(OS, .NET, Visual Studio のバージョン、DB は何かとそのバージョン。エディション)を書いてください。
peng

2019/06/06 12:25

SurferOnWwwさんご指摘ありがとうございます。 基本的な事が出来ていませんでした。
退会済みユーザー

退会済みユーザー

2019/06/06 20:51

前世紀の遺物的な DataList を使う理由は何ですか? 特に理由が無ければ GridView または ListView を使いませんか?
peng

2019/06/07 03:00

横に文字を並べたかったのでGridViewを使わずDataListを使ったのですが。ListViewのほうが使いやすかったのでListViewを使っていこうと思います。
guest

回答1

0

ベストアンサー

現状は、

(1) 全件表示はできるところまでは完成している。
(2) そこから手を加えてキーワード検索ができるようにしたい。
(3) Button1_Click イベントハンドラを追加してそれで処置しようと考えた。
(4) 途中までコードを書いたが、そこで手詰まりになっている。

・・・と理解していますが合ってますか? 理解が違っていたらどう違うのか書いてください。

上の理解が合っているとしてレスします。

SqlDataSource は「データソースの構成」ウィザードを使って設定していると思いますが、その際[WHERE(W)...]ボタンをクリックすると表示される「WHERE 句の追加]ダイアログで条件を追加してください。

以下の画像のような感じです。最後に赤枠で囲った[追加(A)]をクリックするのを忘れないようにしてください。

イメージ説明

上の画像の設定では SqlDataSource のコードは以下のようになります。SELECT クエリに WHERE 句が設定されるのと、SelectParameters が設定され TextBox1 の Text プロパティから自動的に値を取得してパラメータ @ProductName に代入されるようになるところがキモです。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NORTHWINDConnectionString %>" SelectCommand="SELECT [ProductName] FROM [Products] WHERE ([ProductName] LIKE '%' + @ProductName + '%')"> <SelectParameters> <asp:ControlParameter ControlID="TextBox1" Name="ProductName" PropertyName="Text" Type="String" /> </SelectParameters> </asp:SqlDataSource>

結果、テキストボックスに検索キーワードを入力してボタンをクリックすれば、検索結果が以下のように表示されます。

イメージ説明

なお、初期画面ではテキストボックスが空白なので何も表示されません。そこを何とかしたいのであれば、それはまた次の話として、このスレッドをクローズしてから別途質問してください。

投稿2019/06/07 02:01

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

peng

2019/06/07 02:57

データソースの構成を変更してキーワード検索ができるようになりました。。 初期画面の空白は自分で少し考えて、分からなければまた質問します。 SurferOnWwwさんありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問