У меня есть пользовательский веб-элемент управления, созданный на основе класса CompositeDataBoundControl. По сути, это контроль типа сетки данных с использованием boostrap row-col. Есть одно свойство, называемое столбцы, которое содержит столбцы. по сути это выглядит примерно так:
<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, просто не имеет смысла для меня. Мы будем благодарны за любую помощь в расследовании.