nav*_*een 4 asp.net data-binding listview
ASP.NET(VB)中的一个疑问
我在代码隐藏中有一个公共变量(ASPX.VB)
Public _orderCode As String = "Hello World"
Run Code Online (Sandbox Code Playgroud)
在ASPX,我想内联访问它.这也是ListView的LayoutTemplate内部
<asp:ListView runat="server" ID="listView_OrderReplies"
DataKeyNames="ProductID"
DataSourceID="sdsProducts">
<LayoutTemplate>
<h1>Order Replies for Order Code = <%# _orderCode %></h1>
<asp:PlaceHolder ID="itemPlaceholder" runat="server" ></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<b>Name</b>: <%#Eval("ProductName")%><br />
<b>Stock</b>: <%#Eval("UnitsInStock")%><br />
<b>Price</b>: <%#Eval("UnitPrice")%> <br />
</ItemTemplate>
</asp:ListView>
Run Code Online (Sandbox Code Playgroud)
也就是说,我希望这种内联绑定能够成功
<h1>Order Replies for Order Code = <%# _orderCode %></h1>
Run Code Online (Sandbox Code Playgroud)
要么
<h1>Order Replies for Order Code = <%= _orderCode %></h1>
Run Code Online (Sandbox Code Playgroud)
我知道如果它不在数据绑定控件中,它将在页面内工作.我需要的是一种使用内联代码块访问变量的方法.
可能吗?任何人都能指出我正确的方向吗?
顺便说一句,我知道将它绑定在代码隐藏和所有.如果有的话,我正在寻找具体的解决方案,如果没有,我正在寻找确认.
Nik*_*vić 10
它可以完成,而且非常容易.只需处理OnLayoutCreated事件,并在其中调用控制DataBind()方法LayoutTemplate(所有子控件也将自动数据绑定).
<asp:ListView ID="lv" runat="server" OnLayoutCreated="lv_LayoutCreated">...</asp:ListView>
protected void lv_LayoutCreated(object sender, EventArgs e)
{
lv.Controls[0].DataBind();
}
Run Code Online (Sandbox Code Playgroud)
只要确保那里的任何数据都被数据绑定,它就会在之前被实例化(在回发上也是如此).
或者您可以在其中找到特定控件,并且数据绑定就是: lv.Controls[0].FindControl("id").DataBind();
如果你只想在ListView数据绑定上进行数据绑定,而不是在OnDataBound事件中进行数据绑定- 但是你必须定位一个不包含的控件itemPlaceholder,或者你ItemTemplate将再次数据绑定(这次没有数据):
protected void lv_DataBound(object sender, EventArgs e)
{
if(lv.Controls.Count > 0)
lv.Controls[0].FindControl("head").DataBind();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4025 次 |
| 最近记录: |