gpt4 book ai didi

c# - ObjectDataSource 对注释掉的 GridView 有反应吗?

转载 作者:行者123 更新时间:2023-11-30 21:24:57 27 4
gpt4 key购买 nike

我在 asp.net 的 ObjectDataSource 中遇到了一个非常奇怪的行为,重现的描述有点长,所以在我设置场景时请耐心等待。

因此,想象一下用户控件中的普通 ObjectDataSource/GridView 组合。 ObjectDataSource 调用一个返回对象的 List 的方法,GridView 以表格形式显示这些对象:

<div runat="server" ID="ControlWrapper">
<asp:GridView ID="GridView1" AutoGenerateColumns="true" DataSourceID="ObjDataSource1" OnRowDataBound="GridView1_RowBound" runat="server">
</asp:GridView>

</div>

<asp:ObjectDataSource ID="ObjDataSource1" runat="server" SelectMethod="GetBundle" OnSelecting="FixDataSource_Selecting" OnSelected="FixDataSource_Selected"
TypeName="West.VitalSigns.Contracts.ProdFixController">
</asp:ObjectDataSource>

这种方法在代码隐藏中几乎没有任何作用。但是假设我们要根据数据库的内容创建 n 个 GridView-s。所以我们在标记中注释掉 GridView...

<div runat="server" ID="ControlWrapper">
<!--
<asp:GridView ID="GridView1" AutoGenerateColumns="true" DataSourceID="ObjDataSource1" OnRowDataBound="GridView1_RowBound" runat="server">
</asp:GridView>
-->
</div>

...并将类似这样的内容添加到 ObjectDataSource 的 Selected 事件处理程序中:

protected void FixDataSource_Selected(object sender, ObjectDataSourceStatusEventArgs args)
{
HashSet<string> components = new HashSet<string<()
foreach (ProdFix fix in (List<ProdFix>)args.ReturnValue)
{
if (!components.Contains(fix.Component))
{
GridView v = new GridView();
v.ID=fix.Component.Replace(" " ,"").Replace("-","");
v.AutoGenerateColumns = true;
v.DataSource = args.ReturnValue;
v.RowDataBound +=new GridViewRowEventHandler(BundleGrid_RowBound);
ControlWrapper.Controls.Add(v);
components.Add(fix.Component);

}
}
}

此代码有效(或者至少未简化的版本在我的机器上有效),因此您决定从标记中删除注释掉的部分(毕竟不想让那些废话四处流传!)

<div runat="server" ID="ControlWrapper">

</div>

但是,当您这样做时,代码不再有效! ObjectDataSource 不会触发,这意味着 Selected 事件永远不会发生,这意味着您不会得到您的 GridView-s。看起来 ObjectDataSource 正在对 aspx 文件中注释掉的标记使用react?

那么,是这样的吗:

  • ASP.NET 中的错误?
  • 动态创建 GridView 的非标准方式?
  • 无论如何我都不应该尝试的 WTF?
  • 以上都是?

最佳答案

标记中的 gridview 控件没有隐藏,即使带有注释也是如此。 HTML 注释不适用于服务器端标记。改用服务器端注释:

<% /* %>     <% */ %>

<%-– and -–%> 

关于c# - ObjectDataSource 对注释掉的 GridView 有反应吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/917297/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com