Asp.net 数据绑定与循环

Asp.net 数据绑定与循环,asp.net,data-binding,Asp.net,Data Binding,可能重复: 没有什么结果,所以我想我应该重写这个问题,然后再试一次 foreach (XXX x in TTTT){ %> <tr> <td><%=x.val %></td> <asp:ImageButton runat="server" CommandName="uiImgResolve_Click" CommandArgument='&

可能重复:

没有什么结果,所以我想我应该重写这个问题,然后再试一次

foreach (XXX x in TTTT){ %>
       <tr>
           <td><%=x.val %></td>
               <asp:ImageButton runat="server" CommandName="uiImgResolve_Click"
               CommandArgument='<%=X.pkid%>' ImageUrl="../images/IMG.png"/>
     <% } %>
foreach(TTTT中的XXX){%>
这将不起作用,因为我无法在任何设置了RUNTAT属性的控件中设置值。为每行指定值的最佳方法是什么,这样当单击事件发生时,我可以读取所单击项的值,我无法将该值放在查询字符串上,并且我无法使用asp.net数据绑定

我正在做的事情比这个复杂得多,数据绑定将不起作用


也许问这个问题的更好方法是使用上面的循环机制,并且仍然保持一个指向控件代码背后方法的链接?

我建议查看。它提供一个ItemDatabound事件,允许您操作动态生成的内容

我建议查看。它提供了一个ItemDatabound事件,允许您操作动态生成的内容。

将代码混合到标记中确实不适合ASP.Net服务器控件。有几个更好的选择。以下是一个:

标记:

<table>
  <asp:Placeholder id="RowPlaceholder" runat="server" />
</table>

代码隐藏:

foreach (MyObject x in TT)
{
   Literal l1 = new Literal();
   l1.Text = string.Format("<tr><td>{0}</td><td>", x.val);

   ImageButton b = new ImageButton();
   b.ImageUrl = "../images/IMG.png";
   b.CommandArgument = x.pkid;
   b.CommandName = "uiImgResolve_Click";  // maybe do this a little differenlty

   Literal l2 = new Literal();
   l2.TExt = "</td></tr>";

   RowPlaceholder.Controls.Add(l1);
   RowPlaceHolder.Controls.Add(b);
   RowPlaceHodler.Controls.Add(l2);

}
foreach(MyObject x在TT中)
{
文字l1=新文字();
l1.Text=string.Format(“{0}”,x.val);
ImageButton b=新的ImageButton();
b、 ImageUrl=“../images/IMG.png”;
b、 CommandArgument=x.pkid;
b、 CommandName=“uiImgResolve\u Click”//可能会做一些不同的事情
文字l2=新文字();
l2.TExt=“”;
行占位符.控件.添加(l1);
行占位符。控件。添加(b);
RowPlaceHodler.Controls.Add(l2);
}

将代码混合到标记中确实不适用于ASP.Net服务器控件。有几种更好的选择。以下是一种:

标记:

<table>
  <asp:Placeholder id="RowPlaceholder" runat="server" />
</table>

代码隐藏:

foreach (MyObject x in TT)
{
   Literal l1 = new Literal();
   l1.Text = string.Format("<tr><td>{0}</td><td>", x.val);

   ImageButton b = new ImageButton();
   b.ImageUrl = "../images/IMG.png";
   b.CommandArgument = x.pkid;
   b.CommandName = "uiImgResolve_Click";  // maybe do this a little differenlty

   Literal l2 = new Literal();
   l2.TExt = "</td></tr>";

   RowPlaceholder.Controls.Add(l1);
   RowPlaceHolder.Controls.Add(b);
   RowPlaceHodler.Controls.Add(l2);

}
foreach(MyObject x在TT中)
{
文字l1=新文字();
l1.Text=string.Format(“{0}”,x.val);
ImageButton b=新的ImageButton();
b、 ImageUrl=“../images/IMG.png”;
b、 CommandArgument=x.pkid;
b、 CommandName=“uiImgResolve\u Click”//可能会做一些不同的事情
文字l2=新文字();
l2.TExt=“”;
行占位符.控件.添加(l1);
行占位符。控件。添加(b);
RowPlaceHodler.Controls.Add(l2);
}

中继器甚至GridView都可以正常工作。不过需要执行onrow命令。 就像帕迪说的那样

ASPX


一个中继器甚至一个GridView都可以正常工作,但是需要执行onrow命令。 就像帕迪说的那样

ASPX



“数据绑定”会让这变得更干净、更简单……你有什么理由不能使用“数据绑定”吗?你给了人们两个小时的时间来讨论你的上一个问题-给我们一个机会!投票以欺骗的方式结束。投票以结束。@Qiky:如果你想改写你的问题,请编辑它。不要创建新的问题。你需要一周后关闭一个问题。”然后等待2个多小时,等待回复。数据绑定会让这变得更干净、更简单……你有什么理由不能使用数据绑定吗?你给了人们两个小时的时间来讨论你的上一个问题-给我们一个机会!投票以重复方式结束。投票以结束。@Qiky:如果你想改写你的问题,请编辑它。不要创建新的问题。您需要关闭一个问题并等待2个多小时才能得到答复。谢谢Joel,这是第一个有用的答案,而不仅仅是投诉…您是否建议删除asp控件并只使用html img?不,因为您希望它连接到服务器事件。您最好使用中继器和数据绑定-使其成为bi查看html中的内容并不简单,您也不必处理动态向页面添加控件所带来的复杂性。@paddy在这种情况下它不起作用。不知道为什么-1这是唯一一个接近我所寻找的答案……感谢Joel,这是第一个有用的答案,而不仅仅是一个compl是的…你会建议删除asp控件而只使用html img吗?不是,因为你希望它连接到服务器事件。最好使用转发器和数据绑定-这样可以更简单地查看html中的内容,而不必处理动态向页面添加控件所带来的复杂性。@padd在这种情况下它不起作用我不知道为什么这是-1它是唯一一个接近我所寻找的答案…@o.k.w这不是一个选项,逻辑比所示的复杂得多,需要将多个控件嵌入到另一个控件中。OWK我知道你可以很容易地做到这一点,但我尝试做的是looping thu和显示多个通用列表。我不打算使用数据绑定,因为它只会造成混乱,谢谢你的回答tho。@Qiky好吧,我想我不会有你问题未知复杂性的答案。我应该更好地问我的问题。对不起:)@Qiky也许你需要的是生成像Joel建议的那样动态控制。棘手的部分是在页面生命周期的哪个阶段执行此操作。在页面加载时执行此操作,您将无法获得所需的回发行为。我可以继续进行更多操作,但我仍然不知道您的详细问题。祝您好运。@o.k.w这不是一个选项,逻辑要复杂得多我知道你可以很容易地做到这一点,但我正在尝试做的是循环thu并显示多个通用列表。我不打算使用数据绑定,因为它只会造成混乱,谢谢你的回答。@Qiky好吧,我想我不会你的问题的未知复杂性的答案。我应该被问到我的问题