ASP.NETのコーディング方法とは?

このQ&Aのポイント
  • ASP.NET初心者がサーバーサイドの記述方法について悩んでいます。TBLAから年をグループ化し、降順に7年分取得する方法や、取得した年をGridViewのヘッダーに表示する方法を知りたいです。
  • 配列を使用した方法について考えていますが、ASP.NETでの記述方法や変数を使ってヘッダーにセットする方法がわかりません。どなたかご教授いただけないでしょうか。
  • 質問の要点はASP.NETのコーディング方法です。具体的には、TBLAから年をグループ化し、降順に7年分取得する方法やGridViewのヘッダーに取得した年を表示する方法です。配列を使用してヘッダーにセットする方法に困っており、ASP.NETの記述方法や変数を使う方法を知りたいです。
回答を見る
  • ベストアンサー

asp.net コーディング方法

asp.net初心者です。 あるコーディングをしたのですが、サーバーサイドでどう記述したらよいのかわからず悩んでいます。 内容は以下のとおりです。 TBLAから年をグループ化し降順に7年分取得します。 select TOP 7 YYYY from TBLA group by YYYY desc これをgridviewのヘッダーに表示したいのです。 gridviewの列は7列。例えば上記クエリで取得した値が 2012、2011、2010、2009、2008、2007、2006 だとすると gridviewのヘッダーは左から2006、2007、2008、2009、2010、2011、2012と 表示したいです。 ※取得した年は7年分あるとは限りません。 配列を使って下記のように考えたのですが、asp.netでの記述がわからず困っています。 記述方法、またはもっといい案があればご教授をお願いします。 <私の考えた案> (1)クエリにて年を取得 (2)配列に(1)の年を配列にセットする  arry(1)=2012 ~ arry(7)=2006 (3)for文にてヘッダーにセット yearcnt=(1)の件数  for i = yearcnt to 1 step -1 lblHeder1_(i).text=arry(i) next    ※ヘッダーのラベル名は1列目:「lblHeder1_1」、2列目:「lblHeder1_2」3列目:「lblHeder1_3」・・・と続きます。   lblHeder1_(i)の(i)を変数にする方法もわかりません。

noname#208236
noname#208236

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

  • ベストアンサー
  • f_onion
  • ベストアンサー率47% (10/21)
回答No.1

その案を使うのであればFindControl関数使えば行けそうに思います arryを 0からはじまる1次元配列の想定で書いています For i=arry.Length - 1 to 0 step -1 Dim targetLabel As Label = CType(FindControl("lblHeader1_" & i.ToString()), Label) targetLabel.Text = arry(i) Next 実行はしていませんがたぶんいけるんじゃないかと。

noname#208236
質問者

お礼

お返事おそくなり申し訳ありません。 FindControlを使用することで完成できました。 ありがとうございました。

関連するQ&A

  • HyperLinkのNavigateUrl属性にエンコードしたクエリ文字列を設定する方法

    リンククリック時に、ある文字列をエンコードしてURLのクエリ文字列に設定したいのですがうまくいきません。 aspxファイルに以下の記述をすると、生成されたHTMLの<a>タグにはhref属性が無くなります。 <asp:HyperLink ID="HyperLink1" runat="server"  NavigateUrl='<%# "next.aspx?arg=" + Server.UrlEncode("あいう") %>'  Text="リンク"> </asp:HyperLink> 試したこと 1) UrlEncode()ではなく文字列を戻すだけの自作のメソッドを呼び出す  →何も返されません。 2) GridView内のテンプレート列に上記の記述をする  →成功します。 開発環境:ASP.NET 3.5 良い方法があれば教えてください。 よろしくお願いします。

  • <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>

  • [ASP+SQLserver]空白フィールドのWHEREは?

    こんにちわ。 ASPとSQLサーバで簡単なWebを作っています。 まず、以下のようなデータがあるとします。 (列名) 列A,列B,列C (データ)aaaa,NULL,NULL      bbbb,1111,NULL ※NULLは文字列ではなくNULLです。 そこでNULLであるレコードを取得したいので次のようなクエリで実行してみました。 SELECT * FROM sample WHERE(列B='') ORDER BY 列A しかし、あえなく敗北・・・。 また、NULLでないレコードを取得するために、 SELECT * FROM sample WHERE(列B<>'') AND(列C<>'') ORDER BY 列A しかし、こちらもあえなく敗北・・・。 こういうケースはどのようなクエリでやればいいのでしょうか? お手数をお掛けいたしますが宜しくお願いいたします。

  • ASPでサーバーサイドの配列をクライアントサイドへ引渡し

    表記の件の実装方法が分からず、非常に困っています。 どなたかご教授願います。 ■開発環境   ASP(VBScript) ■内容   サーバーサイドでDBから取得した内容を   配列に保持しているのですが、その内容をクライアントサイド処理で   取得したいのですが、どのようにすればいいのか分かりません。   サーバーサイドの配列名 arrSvr() とした場合、   "<%=arrSvr(1)%>"などとすれば取得は出来るのですが、   配列のインデックスを動的に変更して取得したいのですがうまく行きません。   "<%=arrSvr(" & i & ")%>"などとしてもエラーとなってしましますし、   クライアントサイドの配列に一度配列ごと突っ込もうとして   arrClt = "<%=arrSvr%>" のようにしてもダメでした。   どなたか詳しい方、どうぞよろしくお願いします。

  • ASP.Net ObjectDataSource

    現在、過去にAccess で作成しましたシステムをASP.Net にて作り変えております。 GridView のデータソースとして 動的なWhere文を必要としていることから 以前、SQLDataSourceよりもObjectDataSourceに変更したほうが良いとのアドバイスをいただき、赤間本と呼ばれる構築技法の書籍も購入しまして日夜勉強しているASP.Net初心者の者であります。 こちらの本の第10章からが動的Where文を紹介している部分だと思うのですが、なかなか難解で頭に入ってきません。 【こちらでやった事】 DataSetを作成し、基本SQLを作り、TableAdapter を作成しました。 【まずわからない事】 例えば Where句が全て埋まっている場合のSQLが下記のものだとします。 SELECT * FROM test WHRE A = @para1 AND B = @para2 AND C = @para3 動的SQL文を作成したいので SELECT * FROM test WHRE A = @para1 だったり SELECT * FROM test WHRE B = @para2 だったり SELECT * FROM test WHRE C = @para3 だったり SELECT * FROM test WHRE A = @para1 AND B = @para2 だったり SELECT * FROM test WHRE B = @para2 AND C = @para3 だったり SELECT * FROM test WHRE A = @para1 AND C = @para3 だったり SELECT * FROM test WHRE A = @para1 AND B = @para2 AND C = @para3 だったりと 全部で7通りあるわけです。 書籍には、クエリを追加するようにと記述されているのですが、 これら7通りを全て記述して クエリの条件にあったモノを選択し、実行させ GridView にバインドさせるのでしょうか? もしそうだとすると パラメーターが仮に10個あったとしたら すごい数のクエリを追加していくことになるのかなと思い、 まずは、どういう概念で登録していくのかをお教えいただければと存じます。 今まで、動的SQL の場合は、パラメーターが空白、NULLの場合にはSQL文に含めない形で SQL文を作成し、レコードソースにしていたのでTableAdapter を作成して どのような形で動的クエリを実行させるのかがまったくつかめていない状況でございます。 なんとかこの壁を突破し前へ進めればと思っております。 よろしくお願い申し上げます。

  • PHP+MySQLでグループごとの新着データを取得したいです

    [tblA] gid gname -------------------------- 01 | グループ1 02 | グループ2 03 | グループ3 [tblB] id gid text regdate -------------------------- 01 | 01 | テキスト1 | 20080101 02 | 01 | テキスト2 | 20080304 03 | 02 | テキスト3 | 20080408 04 | 03 | テキスト4 | 20080415 05 | 03 | テキスト5 | 20080421 [結果] gid gname text regdate -------------------------- 03 | グループ3 | テキスト5 | 20080421 02 | グループ2 | テキスト3 | 20080408 01 | グループ1 | テキスト2 | 20080304 以上のように、tblAとtblBを結合して 同じgidのものからregdateが一番新しいデータを一つずつ regdateの降順で取得したいです。 select tblA.gid, tblA.gname, tblB.text, max(tblB.regdate) from tblA, tblB where tblA.gid = tblB.gid group by tblB.gid order by tblB.regdate; 以上のSQL文を実行してみたところ、 かえってきたデータは gid gname text regdate -------------------------- 03 | グループ3 | テキスト4 | 20080421 02 | グループ2 | テキスト3 | 20080408 01 | グループ1 | テキスト1 | 20080304 でした。 集計せずに全件取得してPHPで重複を取り除く処理をする事も考えましたが 全件だと件数が多く、limitをつけると必要な件数が取れない可能性があります。 この場合、どのように記述するのが正しいのでしょうか。 ※SQL文やデータは手打ちで作成しています。 打ち間違えがあるかもしれませんが、実際はエラー等出ていませんので その点の指摘は不要です。

  • Access VBA 全クエリ 繰り返し

    Access VBAについてお尋ねさせていただきます。 Access VBAを利用して、以下の繰り返し処理を実行したいです。 (1):レコードの有無にかかわらず、すべてのクエリの名称だけを配列に取得する繰り返し処理 (2):レコードの有無にかかわらず、すべてのクエリを開き、各クエリのレコード件数を配列に取得する処理 どのように記述すればよろしいでしょうか?

  • GridViewのデータソース

    VisualStudio2005で開発をしています。 ASP.NETでDBからデータを抽出し、そのデータを少し編集し、画面に表示とExcelにデータを出力しています。 Excelに出力をする関係上、データをDataTableで取得した後に、二次元配列に編集をしています。その配列に編集したデータをGridViewを使って表示させようかと思っています。 二次元配列の値を簡単にGirdViewのデータソースに設定することはできるのでしょうか? 二次元配列ではなくDataTableに編集してもよかったのですが、そうするとExcelに出力するのが行数分Loopさせなければならなくなるようなので・・・。 よろしくお願いします。

  • 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

  • Access2007での選択クエリー

    ID DATE ITEM とテーブルの列にあります。DATEの列には何十年ものyyyy/m/d が入っています。 作りたいクエリーはこのDATEの中から今日と同じ月日のものを選択したいのです。 それもいちいち今日の日付を手動で入れるのではなく (例えばTODAY()) のような ものを使ってクエリーを実行したときぱっと出てくるものを作りたいのですが。 よろしくお願いします。

専門家に質問してみよう