• 締切済み

ASP.NETのrepeaterかSqlDataReaderの問題

ASP.NET 初心者です。 学校の宿題で、ASP.NET(VB)とMS SQLデータベースを使ってウエブサイトを作っています。 ホームページにサーチ機能をつけているところで、 SqlDataReaderとrepeaterを使って検索結果を表示したところ、表示されるはずの 行が1行だけ表示されません。 何か間違っているのでしょうか。 VB側はPage_Loadで、 cd2.CommandText = "SELECT partName, partID FROM .Part WHERE partName LIKE '%" + kw + "%')" cn.Open() dr = cd2.ExecuteReader() dr.Read() rpResults2.DataSource = dr rpResults2.DataBind() ウエブフォーム側は <asp:repeater id="rpResults2" runat="server"> <ItemTemplate> <TR><td><%# DataBinder.Eval(Container.DataItem, "partName") %></td></TR> </ItemTemplate> </asp:repeater> のような感じです。 Page_Loadで4つrepeaterを使っています。 よくわからずに使っているもので、説明が下手ですみません。 よろしくお願いいたします。

みんなの回答

  • mo_gu
  • ベストアンサー率51% (56/109)
回答No.2

#1です。 SQLで "SELECT COUNT(*) FROM .Part WHERE partName LIKE '%" + kw + "%')" 最初に件数を取得して表示してみたらどうでしょうか?

momo256
質問者

お礼

わかりました。 rd.Read()してはいけなかったみたいです。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • mo_gu
  • ベストアンサー率51% (56/109)
回答No.1

SqlDataReaderで受け取った結果の件数は正しいの?

momo256
質問者

補足

どうやって件数の数えたらよいのでしょうか? dr.RecordsAffected を使っても-1がかえってきます。 ループしていないので、1件1件カウントすることもできません。 何も知らなくて申し訳ありませんが、 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VB.NET

    VB.NETでSQLから取得した数値を3桁をカンマで区切りたいのですが(1234を1,234に)。 正確には、HTML内の <itemtemplate>  <%#   "<tr>" + _    "<td>" + DataBinder.Eval("あ","{0}") +</td>" + _   "</tr>"  %> </itemtemplate> のDataBinder.Eval("あ","{0}") に入ってきた数値を変換したい。 ど素人で申し訳ないですが、よろしくお願いします。

  • ASP.NETで質問です。

    ASP.NETで質問です。 <asp:Repeater ID="rp" runat="server" OnItemDataBound="rp_OnItemDataBound"> <ItemTemplate> <asp:Literal ID="ltr_num" runat="server" /> <asp:Literal ID="ltr_name" runat="server" /> <br /> </ItemTemplate> </asp:Repeater> rp_OnItemDataBoundメソッドでltr_num,ltr_nameに値を入れたいのですが、 ltr_num.Text,ltr_name.Textにアクセスできません。 どなたか教えてください。 お願い致します。

  • VB.NET ゼロ埋め

    VB.NETでSQLから取得した数値をゼロ埋めしたいのですが(1を01に)。 正確には、HTML内の <itemtemplate>  <%#   "<tr>" + _    "<td>" + DataBinder.Eval("あ","{0}") +</td>" + _   "</tr>"  %> </itemtemplate> のSQLより取得した、DataBinder.Eval("あ","{0}") に入ってきた数値を変換したい。 ど素人で申し訳ないですが、よろしくお願いします。

  • ASP GridViewの高さを固定にするには?

    GridViewで全角10文字がちょうど表示できる幅を設定した場合、 10文字を超えるデータを表示しようとするととセル内で折り返してしまいます。 折り返しせず、10文字だけ表示するにはどうすればいいのでしょうか? <div id="containerData" class="containerData" onscroll="containerHeader.scrollLeft=this.scrollLeft;" runat="server"> <asp:UpdatePanel ID="UpdPlView" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:GridView ID="grdList" runat="server" CellPadding="0" AutoGenerateColumns="False" DataSourceID="sqldsList" ShowHeader="False" AllowPaging="False" ShowFooter="True" GridLines="None"> <Columns> <asp:TemplateField HeaderText=""> <ItemTemplate> <table cellspacing="0" class="detailRow"> <tr> <td style="width:100px;"><asp:Label ID="lbl1" runat="server" Text='<%# Eval("Field1") %>'></asp:Label></td> <td style="width:500px;"><asp:Label ID="lbl2" runat="server" Text='<%# Eval("Field2") %>'></asp:Label></td> </tr> </table> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </ContentTemplate> </asp:UpdatePanel> </div> </div> ***スタイルシート*** .containerData { font-size: 11pt; border: solid 1px black; height: 500px; } .detailRow tr { height:30px; background:white; } .detailRow td { border-bottom: 1px solid black; }

  • ASP C# データベースから1行取得

    IDをキーにしてデータを1行セレクトし、各列の情報を個別のテキストボックスに表示したいのですが、どうすればいいかわかりません。。 SqlDataReader dr = cmd.ExecuteReader(); dr.????? こっからわかりません。。。

  • 複数チェックボックスの判定について教えてください。

    複数チェックボックスの判定について教えてください。 こんな感じになっているのですがもし「2つ以上」チェックがついていたらという基準を設けたいのですが どのように書いたらいいでしょうか? <td> <asp:CheckBox ID="CheckBox1" runat="server" /> </td> <td> <asp:CheckBox ID="CheckBox4" runat="server" /> </td> <td> <asp:CheckBox ID="CheckBox7" runat="server" /> </td> </tr> <tr> <td> <asp:CheckBox ID="CheckBox2" runat="server" /> </td> <td> <asp:CheckBox ID="CheckBox5" runat="server" /> </td> <td> <asp:CheckBox ID="CheckBox8" runat="server" /> </td> </tr> <tr> <td> <asp:CheckBox ID="CheckBox3" runat="server" /> </td> <td> <asp:CheckBox ID="CheckBox6" runat="server" /> </td> <td> <asp:CheckBox ID="CheckBox9" runat="server" /> </td>

  • ASP.NETでTimerコントロールを使用したい

    ASP.NETWebアプリケーションについての質問です。 ajaxのTimerコントロールでイベントを発生させ、画面の再描画をしようとしています。 コードは以下のような感じで、OnPreRenderイベント内で描画処理を行います。 Partial Public Class _Default Inherits System.Web.UI.Page Private str As String = "" Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load str = CStr(Date.Now) End Sub Protected Overrides Sub OnPreRender( _ ByVal e As System.EventArgs _ ) Label1.Text = str End Sub End Class Timerコントロールを配置して実行したところ、 Script controls may not be registered before PreRender. というエラーが出てしまいます。 調べてみたのですが原因がわかりません。 何かプロパティの設定などが必要なのでしょうか? aspx のコードは以下のとおりです。 <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication5._Default" %> <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" ></asp:ScriptManager> <asp:Timer ID="Timer1"runat="server"></asp:Timer> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Labe> l </form> </body> </html> 回答よろしくお願いいたします。

    • ベストアンサー
    • AJAX
  • ASP.NET

    VBで作成しています。 下記はSQLサーバーのデータベースを使ったプログラムですが、Microsoft Office Accessのデータベースを使う場合は、どのように変更すればいいでしょうか?教えて下さい。 お願いします。 <プログラム> Dim strSQL As String Dim sqlDa As SqlClient.SqlDataReader Dim dr As DataRow 'SQL文 strSQL = "SELECT * FROM Data1 Dim cmdSQL As New SqlClient.SqlCommand With cmdSQL .Connection = Action .CommandType = CommandType.Text .CommandText = strSQL End With Try Action.Open() sqlDa = cmdSQL.ExecuteReader (以下省略)

  • 他のASPファイルの特定の場所を表示する

    他のASPファイルの特定の場所を表示する main.aspから<A>タグでshiten.aspへリンクしています。 <a href="shiten.asp">支社</a> shiten.aspを開き<a name="osaka">をページのトップに 表示するには、どの様に記述すればよいでしょうか? (以下の記述では動作しませんでした。) <a href="shiten.asp#tokyo">東京支店</a> <a href="shiten.asp#osaka">大阪支店</a> shiten.asp <a name="tokyo"> <table> <tr><td>銀座</td></tr> <tr><td>渋谷</td></tr> <tr><td>新宿</td></tr> </table> <a name="osaka"> <table> <tr><td>梅田</td></tr> <tr><td>心斎橋</td></tr> <tr><td>天王寺</td></tr> </table>

  • <ASP>にTextBoxの値を設定する方法

    TextBoxに記述されたDB接続文字列を<ASP>内で設定しようと試みておりますが、失敗します。どのように記述を改めればよろしいでしょうか? ----------------- <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebForm1" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { TextBox1.Text = Application["DB_CON_STRING"].ToString(); } </script> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <div> </div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" /> <asp:BoundField DataField="DATETIME" HeaderText="DATETIME" SortExpression="DATETIME" /> <asp:BoundField DataField="MESSAGE" HeaderText="MESSAGE" SortExpression="MESSAGE" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="form1.TextBox1.Text"★ここがうまくいかない★ SelectCommand="SELECT * FROM TEST ORDER BY ID DESC"></asp:SqlDataSource> </form> </body> </html>