Я создаю страницу DNN с формой. Sqldatasource находится вне формы. Мне нужно управлять вызовом sqldatasource.insert() из кода. (есть 2 кнопки - 1, которые вставляются и переходят на одну страницу, 1, которая вставляет и изменяет вид формы в режим редактирования, чтобы добавить дополнительные данные).asp.net VB Findcontrol не может найти элемент управления вне formview
Код не может найти элемент управления вне формы. Я вставлю код позади и только sqldatasource переднего конца (форма формы очень сложная и длинная).
Я использую рекурсивное управление findcontrol. Я начинаю смотреть на уровень me.page (верхний уровень?), Но я все еще получаю нулевую ссылку на источник данных sql. (Не могу найти его) (Код работает, когда я, но регулярная команда = кнопка вставки, но мне нужно управлять перенаправлением в зависимости от того, какая кнопка нажата)
Любые идеи ???
Передняя часть источника данных SQL:
<asp:SqlDataSource ID="PromotionSqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings%>"
InsertCommand="INSERT code is here"
SelectCommand="select code is here"
UpdateCommand="UPDATE code is here"
DeleteCommand="DELETE code is here">
<InsertParameters>
lots of parameters
</InsertParameters>
<EditParameters>
lots of parameters
</EditParameters>
<DeleteParameters>
</DeleteParameters>
</asp:SqlDataSource>
FormView: за
<asp:FormView ID="FormView1" runat="server" AllowPaging="True"
DataKeyNames="Promo_ID"
DataSourceID="PromotionSqlDataSource" DefaultMode="Insert">
Lots of form code here
<asp:Button ID="Button6" runat="server" Text="Next" onclick="Button6_Click" />
</asp:FormView>
Код:
Protected Sub Button6_Click(sender As Object, e As System.EventArgs)
MessageBox("BUTTON 6 CLICK")
Dim PromotionSqlDataSource As SqlDataSource = TryCast(FindControlRecursive(Me.Page, "PromotionSqlDataSource"), SqlDataSource)
PromotionSqlDataSource.Insert()
FormView1.ChangeMode(FormViewMode.Edit)
End Sub
Public Function FindControlRecursive(root As Control, id As String) As Control
If root.ID = id Then
Return root
End If
Return root.Controls.Cast(Of Control)().[Select](Function(c) FindControlRecursive(c, id)).FirstOrDefault(Function(c) c IsNot Nothing)
End Function
Где находится кнопка6? Не можете ли вы напрямую ссылаться на «PromotionSqlDataSource»? – Jumpei
Это в форме. (Я отредактировал код выше, чтобы показать кнопку) – Joe
Я не уверен, что вы имеете в виду, обратившись к sqldatasource. Если вы установите DataSourceID = «PromotionSqlDataSource» на кнопку, он все равно не работает. – Joe