使用ASP.NET控件而不进行数据绑定

时间:2009-07-17 11:40:33

标签: asp.net data-binding

看来我一直在使用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控件并经常使用它们,在这种情况下它不是正确的工具。

2 个答案:

答案 0 :(得分:1)

您可以通过查询字符串传递参数 这样的事情:

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

答案 1 :(得分:0)

我建议使用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;

}

运气好!