• 締切済み

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にアクセスできません。 どなたか教えてください。 お願い致します。

みんなの回答

回答No.2

ビハインドコードがC#かVBかわからないので、とりあえずC#として、書いてあります。 VBであれば、読み替えをしてください。 ページロードでデータセットをRepeaterにセット protected void Page_Load(object sender, EventArgs e) {   DataTable l_dtb = new DataTable();   l_dtb.Columns.Add("A", typeof(int));   l_dtb.Columns.Add("B", typeof(string));   for (int i = (int)'a'; i <= (int)'z'; i++)   {     l_dtb.Rows.Add(new object[] { i, ((char)i).ToString() });   }   this.rp.DataSource = l_dtb;   this.rp.DataBind(); } 仮にこういった場合、 ------------------------------------------------- aspxファイルで、勝手にセットを行いたい場合 ------------------------------------------------- <asp:Literal ID="ltr_num" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "A")%>' /> <asp:Literal ID="ltr_name" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "B")%>' /> というにしてもできます。 ------------------------------------------------- OnItemDataBoundイベントで、セットを行いたい場合 ------------------------------------------------- 以下のようにするとできます。 protected void rp_OnItemDataBound(object sender, RepeaterItemEventArgs e) {   DataRow l_drw = ((DataRowView)e.Item.DataItem).Row;   Literal l_ltr_num = (Literal)e.Item.FindControl("ltr_num");   l_ltr_num.Text = l_drw["A"].ToString();      Literal l_ltr_name = (Literal)e.Item.FindControl("ltr_name");   l_ltr_name.Text = l_drw["B"].ToString(); }

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

Literalは、repeaterコントロールのItemTemplateとして利用できなさそうな。 なんかItemを設定したいのだったら、DataSource側をいじってみては。

関連するQ&A

  • ASP.NET WEBアプリケーションで作成されたページより他の既存ペ

    ASP.NET WEBアプリケーションで作成されたページより他の既存ページへデータを投げたいと考えているのですがセキュリティ上難しいのでは?と考えています。しかし、なんとか代替案がないかと思っておりどなたかヒントをいただけないでしょうか? <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <asp:TextBox ID="TextBox3" runat="server" Height="72px" TextMode="MultiLine" Width="651px"></asp:TextBox> <br /> <asp:Button ID="Button1" runat="server" Text="Button" />&nbsp;&nbsp; <asp:Button ID="Button2" runat="server" Text="Button" /> <br /> <br /> <asp:Label ID="Label1" runat="server"></asp:Label> 例えばこんな簡単なaspxのページで構成されているとします。 テキストボックスに入れた値を既存のWEBページ(Yahooへのログインだとか)へ入れ込みたいのですが・・・クライアントにスクリプトで作ってとかなら余裕で出来ると思うのですがサーバサイドで仕込むことは難しいでしょうか?回避策とかもあるとなおうれしいのですが・・・よろしくお願いします。

  • 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を使っています。 よくわからずに使っているもので、説明が下手ですみません。 よろしくお願いいたします。

  • 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.NETでNAME属性を固定にしたい

    ASP.NETで、「runat="server"」を含むフォームタグの場合、NAME属性が指定できません。 <input name="hoge" id="hoge" type="text" runat="server" /> と指定した場合、 <input name="ctl00$C$hoge" id="ctl00$C$hoge" type="text" /> となります。 ClientIDMode="Static"を指定することでID属性は固定にすることができるのですが、 NAME属性も同様に固定する方法はありますでしょうか? 宜しくお願いします。 ---------------------- Visual Basic 2010 .NET Framework 4.0 ----------------------

  • gridviewの中のCSSを変更したい

    画面にチェックボックスがあります。 チェックボックスを Trueにした時、gridviewのaタグを有効にし、Falseにした時、無効にしたいと思っています。 vb側のチェックボックスを変更した時に、どのように記述すればよいでしょうか? できなければ、Falseの時に、aタグのclassを空白にしてもいいかなと思っています。 どなたかご教授ください。 <div id="containerData" class="containerData" onscroll="containerHeader.scrollLeft=this.scrollLeft;" runat="server"> <asp:GridView ID="grdList" runat="server" AutoGenerateColumns="False" DataSourceID="sqldsList" CssClass="List" DataKeyNames="NO" SelectionMode="None" CellPadding="0" CellSpacing="0" GridLines="None" > <Columns> <asp:TemplateField HeaderText="番号"> <ItemTemplate> <a class="tooltip" title='<%# Eval("NO") %>'> <custom:textLabel ID="lblNo" CssClass="No detailRow" runat="server" Text='<%# Eval("NO") %>' /> </a> </ItemTemplate> <ItemStyle CssClass="rowStyle"></ItemStyle> </asp:TemplateField> <asp:TemplateField HeaderText="名前"> <ItemTemplate> <a class="tooltip" title='<%# Eval("NAME") %>'> <custom:textLabel ID="lblName" CssClass="Name detailRow" runat="server" Text='<%# Eval("NAME") %>' /> </a> </ItemTemplate> <ItemStyle CssClass="rowStyle"></ItemStyle> </asp:TemplateField> </Columns> </asp:GridView> </ContentTemplate> </div>

  • DataGridの列幅を実行時に変更したい

    Web画面のSpreadからDataGridへ変更する対応を行っていて、 Spreadの列幅と同じ値を以下のようにテンプレート列を使用して、 ボタンやらチェックボックスやらラベルやら配置をして設定しました。 (TemplateColumnのWidthを使用するとSpreadと同じ値をいれても1/4くらいになってしまったので。) <Columns>  <asp:TemplateColumn>   <ItemTemplate>    <asp:Button id="grdButton" runat="server" Width="45"></asp:Button>   </ItemTemplate>  </asp:TemplateColumn>  <asp:TemplateColumn>   <ItemTemplate>    <asp:Button id="grdButton1" runat="server" Width="45"></asp:Button>   </ItemTemplate>  </asp:TemplateColumn> :          : しかし、実行時に条件によって見える列が変化するため 列を非表示にしたいのですが、Visibled = Falseにしてしまうと、 JavaScriptで、隠している列の値がとれないので、Width = 0にしたいのですが、 grd.Columns(col_2).HeaderStyle.Width = New Unit(0) grd.Columns(col_2).ItemStyle.Width = New Unit(0) というように記述しても列幅が0になっていません。 上記のように実現したければ、どのような手段があるでしょうか?

  • データグリッド内に配置したテキストボックスの幅調整

    初めまして。 vb.net初心者(開発経験2週間)です。 データグリッド内のテキストボックスにDBから取得してきた値を テキストボックスに表示させるところまではできたのですが そのテキストボックスを取得してきた値に合わせて 幅を調整したいのですが直接widthを指定しても幅が 変わってくれません。 どなたかご教授いただけませんでしょうか? よろしくお願いいたします。 現在以下のようにソースコードを考えています。 <asp:datagrid id="MyDataGrid" style="Z-INDEX: 105; LEFT: 0px; POSITION: absolute; TOP: 88px" runat="server" BackColor="#FFE0C0" Height="30px" Width="300px" ForeColor="Black" BorderColor="Black" BorderStyle="Solid" AutoGenerateColumns="False" HorizontalAlign="Center"> <Columns> <asp:TemplateColumn HeaderText="DBカラム名"> <HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"> </HeaderStyle> <ItemTemplate> <asp:TextBox Runat="server" ID="txt1" Text='<%# DBから値を取得 %>'> </asp:TextBox> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:datagrid>

  • yahoo API ASP.NETで表示させるには

    お世話になります 環境 Windowsxp pro asp.net vb ACCESS(テーブル) 超初心者 Yahoo APIですが下記を参考中に作成しています http://www.atmarkit.co.jp/fdotnet/dotnettips/477 aspx-------------------------------------------------------------- <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default6.aspx.vb" Inherits="loop_Default6" %> <!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>webAPI</title> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="txtKeyword" runat="server"></asp:TextBox> <asp:Button ID="btnSearch" runat="server" OnClick="btnSearch_Click" Text="検索" /> <br /> <asp:BulletedList ID="list" runat="server" DataSourceID="Xml" DataTextField="Title" DataValueField="Url" DisplayMode="HyperLink"> </asp:BulletedList> <asp:XmlDataSource ID="Xml" runat="server" DataFile="http://search.yahooapis.jp/WebSearchService/V2/webSearch?appid=自分のID&query=apiとは?&results=20" TransformFile="~/App_Data/YahooSearch.xsl"></asp:XmlDataSource> <br /> </div> </form> </body> </html> aspx.vb Partial Class loop_Default6 Inherits System.Web.UI.Page Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click Xml.DataFile = _ "http://search.yahooapis.jp/WebSearchService/V2/webSearch?appid=自分のID&query=" _ & Server.UrlEncode(txtKeyword.Text) & "&results=50" End Sub End Class xsl--------------------------------------------- <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:yahoo="urn:yahoo:jp:srch" version="1.0"> <xsl:template match="/yahoo:ResultSet"> <ResultSet> <xsl:for-each select="yahoo:Result"> <Result> <xsl:attribute name="Title"> <xsl:value-of select="yahoo:Title" /> </xsl:attribute> <xsl:attribute name="Url"> <xsl:value-of select="yahoo:Url" /> </xsl:attribute> </Result> </xsl:for-each> </ResultSet> </xsl:template> </xsl:stylesheet> -------------------------------------------- 現在は表示ぐらいまでならできました これをyahooオークションで転用したいのですが ASP.NETでググってもあまりHITしません 分かる方初心者ですがご教授願います

  • GridView でコンボボックスの設定

    再質問をさせていただきます。 gridviewを作成しました。 -------------------------------------------------------------------------------- <asp:GridView ID="grdList" runat="server" DataSourceID="sqldsList"> <Columns> <asp:BoundField DataField="ITEMNO" HeaderText="ITEMNO"></asp:BoundField> <asp:TextBox ID="txtNAME" runat="server" Text='<%# Bind("ITEM_NAME") %>'></asp:TextBox> <ItemTemplate>   <asp:DropDownList CssClass="cnbstr" ID="cnb_KBN" runat="server"     DataSourceID="sqldscnb1" DataTextField="NAME" DataValueField="NO" AutoPostBack="True"></asp:DropDownList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> -------------------------------------------------------------------------------- このコンボボックスに値を設定させたいのですが、ITEMNO="01"の時だけ、txtNAMEの値を初期表示したいと思っています。 RowDataBound、RowCreatedで可能かと思ったのですができずに困っています。 どなたかご教授お願いします。 Protected Sub grdList_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdList.RowDataBound   If e.Row.RowType = DataControlRowType.DataRow Then     IF DataBinder.Eval(e.Row.DataItem, "ITEMNO").ToString() = "01" THEN       Dim dlist As DropDownList = DirectCast(e.Row.FindControl("cnb_KBN"), DropDownList)       dlist.SelectedValue = "ITEM_NAME" ←こんな感じのことをしたい     ELSE       設定しない     END IF   End If End Sub

  • aspxでIFみたいなことがしたい

    aspxファイルで、以下のようにデータリストを使用しています。 <asp:DataList ID="datalistBiographies" runat="server" RepeatDirection="Horizontal" Width="100%"> <ItemTemplate> <p> <a href='BiographyInfo.aspx?id=<%# Eval("BiographyID") %>'>View Biography</a><br /> <a id="lnkProjects" href='<%#Eval("ProjectPicture") %>'>Submitted Projects</a> </p> </ItemTemplate> </asp:DataList> ここで、ProjectPictureの値が空文字列のときにこの<a>タグを表示したくないのですが、ASPのときは以下のようにしましたがASP.Netではどのようにすればいいでしょうか? <% If (Not Len(ProjectPicture) > 0) Then %> <a id="lnkProjects" href='<%#Eval("ProjectPicture") %>'>Submitted Projects</a> <% End If %> 基本的なことですみませんがよろしくお願いします。検索の仕方が悪いのか自分で調べることができませんでした。