【问题标题】:Using ASP.NET Controls without databinding在没有数据绑定的情况下使用 ASP.NET 控件
【发布时间】:2010-11-11 16:20:33
【问题描述】:

看来我使用 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。这只是一个简单的例子,我试图做的事情要复杂得多,不利于数据记录。在 Classic ASP 中,我们过去只调用一个 JS 方法,然后提交带有嵌入在隐藏字段中的 PKID 的表单。有更优雅的方法来解决这个问题(如果有帮助,我们将使用 Jquery)

正如我所说,我非常熟悉所有 .net 控件并经常使用它们,在这种情况下,它不是正确的工具。

【问题讨论】:

  • 你不能使用中继器控制。这样一来,它可能会产生更多的问题。我建议您使用正确的 asp.net 设计来解决您的问题(或者在 asp.net 设计中会有一种方法来解决它)。如果你能解释更多关于你进入的场景,我可以理解并会尝试建议你。
  • 搜索Repeator控制。看看这对你有没有帮助。

标签: asp.net data-binding


【解决方案1】:

我建议使用 listview 控件。像这样的:

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

}

祝你好运!

【讨论】:

    【解决方案2】:

    您可以通过查询字符串传递参数。
    像这样:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 2013-09-18
      • 2011-10-20
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多