0
레이블에 대한 정보를 수집해야하는 데이터 소스가 있습니다. 이들은 모두 다른 DataSource에 연결된 DataList 안에 있습니다. 내 응용 프로그램을 디버깅 할 때 값은 Nothing입니다. 나는 구불 구불 한 선이 없기 때문에 나는 베벌리를 가지고 있다고 생각했으나 작동하지 않습니다. 누군가이 프로젝트를 완료 할 수 있도록 데이터 소스를 찾도록 도와 줄 수 있습니까?중첩 된 데이터 소스를 찾을 수 없습니다.
나는 FindControl("dsPicklist")
과 DirectCast(FindControl("dsPicklist"), SqlDataSource)
을 시도했지만 둘 다 값을 반환하지 않습니다. 난 당신이 DataList
내부 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>
으악 내부
SqlDataSource
제어를 찾을 수 있습니다. 'ItemTemplate'이 있습니다. 다른 레이블이이 질문과 관련이 없으므로 페이지의 일부만 복사하여 붙여 넣었습니다. 나는 숨겨진 필드와 데이터 소스가 서로를 쉽게 찾을 수 있도록 데이터 소스 안에 데이터 소스를 넣었다. 이전에 목록 밖에서 여분의 데이터 소스를 넣으려고했지만 숨겨진 필드에 문제가있었습니다. – jlg나는 아무것도 나타나지 않습니다. 당신이 쓴 코드는 내가 필요로하는 것처럼 보이지만 나는 단지 데이터 바인딩이 맞지 않다고 생각하니? 처음에는'DataList1.DataBind()'를 썼으나 레이블에는 아무 것도 나타나지 않았습니다. 그 이후로 나는 그것을 여러 번 다시 쓰고, 결과가 없을 때마다. 쿼리의 결과는 너무 많은 옵션이므로 글 머리 기호 목록에 잘 표시되지만 사용자가 예 또는 아니요를 클릭 할 수 있어야하므로 글 머리 기호 목록을 사용할 수 없습니다. – jlg
반복하려는 레이블이있는 첫 번째 내부에 다른 중첩 DataList가 필요하다고 생각합니다. 그리고 그 데이터리스트의 데이터 소스를 dsPicklist로 설정하십시오. 그리고 코드 숨김이 필요 없습니다. – Magnus