Vb.net 未找到嵌套的数据源
我有一个需要收集标签信息的数据源。它们都位于连接到不同数据源的数据列表中。当我调试应用程序时,该值为零。我认为我的措辞是正确的,因为没有扭曲的线条,但它不起作用。有人能帮我找到数据源,这样我就可以完成这个项目吗 我尝试了Vb.net 未找到嵌套的数据源,vb.net,datasource,datalist,findcontrol,Vb.net,Datasource,Datalist,Findcontrol,我有一个需要收集标签信息的数据源。它们都位于连接到不同数据源的数据列表中。当我调试应用程序时,该值为零。我认为我的措辞是正确的,因为没有扭曲的线条,但它不起作用。有人能帮我找到数据源,这样我就可以完成这个项目吗 我尝试了FindControl(“dsPicklist”)和DirectCast(FindControl(“dsPicklist”),SqlDataSource),但都没有返回值 Protected Sub Page_Load(ByVal sender As Object, By
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>
Protected Sub Page_Load(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
'在数据列表中查找嵌套的数据源控件。
Dim ds作为SqlDataSource=DirectCast(FindControl(“dsPicklist”),SqlDataSource)
'将数据源转换为数据视图
Dim dv As DataView=DirectCast(ds.[Select](DataSourceSelectArguments.Empty),DataView)
对于dv中的每个drv作为DataRowView
'找到标签
Dim lbl As Label=FindControl(“Label3”)
'将数据显示到标签中
lbl.Text=dv(“Text”).ToString
下一个
端接头
虽然我不知道为什么在数据列表中有SqlDataSource
,但代码中有一些错误。您应该将
添加到标记中
<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>
哎呀,对不起<代码>项目模板
在那里。我只是复制并粘贴了部分页面,因为其他标签与这个问题无关。我将数据源放在数据列表中,这样hiddenfield和数据源就更容易找到彼此。我以前尝试过在列表之外添加一个额外的数据源,但它在hiddenfield中出现了问题。我无法显示任何内容。您编写的代码似乎正是我需要的,但我想我只是没有进行数据绑定,对吗?起初,我只编写了DataList1.DataBind()
,但标签中没有显示任何内容。从那以后,我多次重写,每次都没有结果。查询结果在项目符号列表中显示得很好,因为它们有太多的选项,但我不能使用项目符号列表,因为用户需要能够单击“是”或“否”,因为这是用于调查。我认为您需要在第一个列表中添加另一个嵌套的数据列表,其中包含要重复的标签。然后将该数据列表的数据源设置为dsPicklist。而且你不需要任何代码隐藏。哦,我甚至不知道你能做到这一点。:)我嵌套了一个数据列表,能够提取我需要的信息!非常感谢!
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Make sure DataList1 is databound before doing this
For Each item As DataListItem In DataList1.Items
Dim lbl As Label = DirectCast(item.FindControl("Label3"), Label)
Dim ds As SqlDataSource = DirectCast(item.FindControl("dsPicklist"), SqlDataSource)
Next
End Sub