【发布时间】:2019-03-29 14:41:06
【问题描述】:
我有一个基于 CompositeDataBoundControl 类构建的自定义 Web 控件。它本质上是一个使用 boostrap 行列的数据网格类型控件。有一个名为 columns 的属性保存列。本质上它看起来像这样:
<cc:TableControl runat="server" id="tblControl">
<Columns>
<cc:TableColumn DataFieldName="field1" HeaderText="Field 1" />
<cc:TableColumn DataFieldName="field2" HeaderText="Field 2" />
</Columns>
</cc:TableControl>
如果我在代码隐藏中执行以下操作,则可以正常工作:
tblControl.DataSource = ds; // Connect to dataset
tblControl.DataBind();
但是,如果我这样做:
<cc:TableControl runat="server" id="tblControl" DataSourceID="myDS">
<Columns>
<cc:TableColumn DataFieldName="field1" HeaderText="Field 1" />
<cc:TableColumn DataFieldName="field2" HeaderText="Field 2" />
</Columns>
</cc:TableControl>
<asp:SqlDataSource runat="server" ID="myDS"
ConnectionString="<%$ ConnectionStrings:Primary %>"
SelectCommand="{sql here}"></asp:SqlDataSource>
它不仅不起作用,也不会抛出错误,我无法使用 F5 运行代码,但没有抛出或显示我可以找到的错误。它只是不运行服务器。它打开了我的浏览器,但我看不到该站点。如果我编译代码并在服务器上运行它,我会得到“无法访问此站点 - 连接已重置。”。它只发生在此页面上,不会发生在网站上的任何其他页面上。
如果我收到一条错误消息,我觉得我可以解决这个问题,但如果它在某处抛出错误,我将找不到它。
这很奇怪,因为我已经制作了基于 CompositeDataBoundControl 的其他自定义控件,它们与 DataSourceID 一起工作得很好。我能看到的唯一区别是在这个控件中我没有使用 ControlBuilder。但是,如果我在后端进行数据绑定但不使用 DataSourceID,它可以完美地工作这一事实对我来说没有意义。任何有关调查地点的帮助将不胜感激。
【问题讨论】:
标签: c# asp.net data-binding custom-controls