【发布时间】:2017-07-25 22:40:43
【问题描述】:
我在 ASP.NET 控件中有面板。当它不可见时,Panel 中的所有GridViews 都是数据绑定。当Panel 不可见时,我不希望他们这样做。提出了以下solution。这是Placeholders 的一个很好的解决方案,我已经尝试为Panels 实现它
public class NewPanel : Panel
{
protected override void DataBindChildren()
{
if (visible)
{
base.DataBindChildren();
}
}
}
我的问题是我现在如何在 .aspx 页面的标记中使用 NewPanel 类?
或者有没有办法在代码中动态覆盖Panel中的方法,并在标记中继续使用Panel?
这是aspx代码的一部分
<asp:GridView ID="AssignedGV" runat="server" AutoGenerateColumns="False" DataKeyNames="OrderID" DataSourceID="AssignedDS" Width="100%">
<Columns>
<asp:TemplateField HeaderText="Created" SortExpression="DateOrderCreated">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("DateOrderCreated", "{0:d-MMM-yyyy}") %>'></asp:Label>
</ItemTemplate>
<asp:SqlDataSource ID="AssignedDS" runat="server" ConnectionString="<%$ ConnectionStrings:XXXXXXX %>" SelectCommand="SELECT TOP (100) PERCENT T_Orders.OrderID, XXXXXXXXXXXXXXXXX OrderQuoteVersion.RequestApprovalOfEmployeeID, T_Orders.JobNumber FROM XXXXXXX AS T_OrderQuoteVersion RIGHT OUTER JOIN XXXXX AS T_Orders INNER JOIN XXXXXXX ON T_Orders.CustomerID = T_Customers.CustomerID ON T_OrderQuoteVersion.OrderID = T_Orders.OrderID "></asp:SqlDataSource>
此代码在 Panel 内,无论 Panel 是否不可见都会被数据绑定
【问题讨论】:
-
您目前的数据绑定情况如何?您是使用 SQLDataSource 控件还是使用 C# 代码隐藏页面?您能否还包括您当前的相关 ASPX 标记?
-
我已经包含了相关代码。是的,我正在使用 SqlDataSource 控件。
标签: c# asp.net data-binding overriding