2009-07-17 5 views
0

私はasp.netデータバインディングを長年使用してきたようですが、私はいくつかの基本を忘れてしまっています。データバインディングなしでASP.NETコントロールを使用

データバインディングなしでASPXページに動的にテーブルを作成しています。

foreach (XXX x in TTTT){ %> 
     <tr> 
      <td><%=x.val %></td> 
       <asp:ImageButton runat="server" CommandName="uiImgResolve_Click" 
       CommandArgument='<%=X.pkid%>' ImageUrl="../images/IMG.png"/> 
    <% } %> 

おそらく私はRUNAT = Serverを使用することはできません。また、行のIDを指定できない場合もあります。これはほんの単純な例です。私がしようとしていることははるかに複雑で、データバインディングには役立ちません。従来のASPでは、JSメソッドを呼び出して、隠しフィールドにPKIDを埋め込んだフォームを送信するだけでした。

私はすべての.netコントロールをよく知っていて、頻繁に使用していますが、この場合は正しいツールではないと言いました。

+1

あなたはRepeaterコントロールを使用することはできません。このようにして、さらに多くの問題が生じる可能性があります。私はあなたの問題を解決するasp.netの適切なデザインを使用することをお勧めします(または、別の方法でそれを解決するasp.netデザインの方法があります)。あなたがあなたのシナリオについてもっと説明することができれば、私は理解でき、あなたを提案しようとします。 –

+1

リピーターコントロールを検索します。これがあなたに役立つかどうかを見てください。 –

答えて

0

私はリストビューコントロールを提案します。このような何か:

<asp:ListView ID="lvImages" runat="server" OnItemDataBound="lvImages_ItemDataBound"> 
    <LayoutTemplate> 
     <table class="tblImages" cellpadding="0" cellspacing="0"> 
      <tr class="ImageHeaderRow"> 
       <td>Imagename</td> 
       <td>Image</td> 
       <td>Location</td> 
      </tr> 
      <asp:PlaceHolder ID="itemContainer" runat="server"></asp:PlaceHolder> 
     </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <tr> 
      <asp:literal ID="ltrCell1" runat="server" /> 
      <td><asp:ImageButton ID="imgMyImage" runat="server" /></td> 
      <td><asp:Label ID="lblLocation" runat="server" ></asp:Label></td> 
     </tr> 
    </ItemTemplate> 
</asp:ListView> 

コードの背後にある:

protected void lvImages_ItemDataBound(object sender, ListViewItemEventArgs e) { 
      if (e.Item.ItemType == ListViewItemType.DataItem) { 
       ListViewDataItem currentItem = (ListViewDataItem)e.Item; 
       MyImageObject oImg = (MyImageObject)currentItem.DataItem; 


       Literal ltrCell1 = e.Item.FindControl("ltrCell1") as Literal; 
       ImageButton imgMyImage = e.Item.FindControl("imgMyImage") as ImageButton ; 
       Label lblLocation= e.Item.FindControl("lblLocation") as Label; 
       ltrCell1.text = string.format(@"<td id=""{0}"">{1}</td>", oImg.id, oImg.val); 
       imgMyImage.CommandArgument = oImg.arg; 
       imgMyImage.CommandName = "cmdNAme"; 
       imgMyImage.ImageUrl = oImg.URL; 

} 

最高の幸運!

1

クエリ文字列でパラメータを渡すことができます。このような
何か:

foreach (XXX x in TTTT){ %> 
    <tr> 
     <td><%=x.val %></td> 
      <a href='?Action=Resolve&pkid=<%=X.pkid%>'> 
       <img src='../images/IMG.png' /> 
      </a> 
<% } %> 
関連する問題