У меня есть источник данных, который должен собирать информацию для ярлыка. Они находятся внутри DataList, который подключен к другому источнику данных. Когда я отлаживаю приложение, значение равно Nothing. Я думал, что у меня есть вербальное право, так как нет четких линий, но он не работает. Может кто-нибудь помочь мне найти источник данных, чтобы я мог выполнить этот проект?Вложенный DataSource не найден
Я пробовал FindControl("dsPicklist")
и DirectCast(FindControl("dsPicklist"), SqlDataSource)
, но никто не получил возвращаемое значение.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Find the nested DataSource control in the DataList.
Dim ds As SqlDataSource = DirectCast(FindControl("dsPicklist"), SqlDataSource)
'convert the DataSource into a dataView
Dim dv As DataView = DirectCast(ds.[Select](DataSourceSelectArguments.Empty), DataView)
For Each drv As DataRowView In dv
'Find the label
Dim lbl As Label = FindControl("Label3")
'Display the data into the label
lbl.Text = dv("TEXT").ToString
Next
End Sub
<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1"
Width="100%" CellPadding="4" ForeColor="#333333">
<ItemTemplate>
<asp:HiddenField ID="hiddenPicklistID" runat="server"
Value='<%# Bind("PicklistID") %>' />
<asp:Label ID="Label3" runat="server"></asp:Label>
<asp:SqlDataSource ID="dsPicklist" runat="server"
ConnectionString="<%$ ConnectionStrings:SurveyConnectionString %>"
SelectCommand="SELECT p.TEXT FROM PICKLIST p
JOIN C_Survey_Questions c
ON p.PICKLISTID = c.PicklistID
AND c.QuestionID = @QuestionID
AND c.SurveyID = @SurveyID
WHERE p.PICKLISTID IS NOT NULL
AND c.PicklistID IS NOT NULL">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="SurveyID"
PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter ControlID="HiddenField2" Name="QuestionID"
PropertyName="Value" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</ItemTemplate>
</asp:DataList>
Упс, извините. 'ItemTemplate' есть. Я просто скопировал и вставил части страницы, потому что другие ярлыки не имеют отношения к этому вопросу. Я поместил источник данных в datalist, чтобы было проще, чтобы скрытое поле и источник данных находили друг друга. Я попытался поставить дополнительный источник данных за пределы списка раньше, и у него были проблемы со скрытым полем. – jlg
Я не могу ничего найти. Код, который вы написали, кажется, именно то, что мне нужно, но я думаю, что я просто не привязываюсь к делу? Сначала я просто написал 'DataList1.DataBind()', но ничего не появилось в метке. С тех пор я переписал его много раз, и каждый раз, когда я не получаю никаких результатов. Результаты запроса отображаются только в списке с маркировкой, потому что их так много параметров, но я не могу использовать маркированный список, потому что пользователь должен иметь возможность нажимать «да» или «нет», потому что это для опроса. – jlg
Я думаю, вам нужен еще один вложенный DataList внутри первого, у которого есть метка, которую вы хотите повторить. А чем установить datasource этого datalist в dsPicklist. И вам не понадобится кодовое слово. – Magnus