我很難過。我有2名相對相同嵌套列表視圖,按鈕上點擊事件,所述第一列表視圖是細,第二個然而是空的:爲什麼我的第二個listview爲空
ASPX:
...
<asp:HiddenField ID="hfCourseId" ClientIDMode="Static" runat="server" Value="" />
...
<asp:listView ... ID="lvResponseNames">
...
<InsertItemTemplate>
<asp:ListView ... ID="lvQuestions" DataSourceId="sdsQuestions" onItemDataBound="lvQuestions_ItemDataBound">
<ItemTemplate>
...
</ItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="sdsQuestions" ...
SelectCommand="SELECT col1, col2, col3 from tbl where id=0">
</asp:SqlDataSource>
<asp:ListView ... ID="lvAdditionalQs" DataSourceId="sdsAdditionalQuestions" onItemDataBound="lvAdditionalQuestions_ItemDataBound">
<ItemTemplate>
...
</ItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="sdsAdditionalQuestions" ...
SelectCommand="SELECT col1, col2, col3 from tbl where [email protected]">
<SelectParameters>
<asp:ControlParameter ControlID="hfCourseId" Name="CourseId" PropertyName="Value" />
</SelectParameters>
</asp:SqlDataSource>
<asp:Button ID="CustomInsertButton" runat="server" Text="Insert Attendee Responses >>" OnClick="CustomInsertButton_Click" />
</InsertItemTemplate>
<asp:listView ... ID="lvResponseNames">
aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
...
if (int.TryParse(Request.QueryString["CourseId"], out iCourseId)
hfCourseId.Value = iCourseId;
}
...
protected void CustomInsertButton_Click(object sender, EventArgs e)
{
//Default Questions
ListView lvQs = (ListView)lvResponseNames.InsertItem.FindControl("lvQuestions") as ListView;
Response.Write("Checking " + lvQs.Items.Count + " Defualt list view items. <br />");
SqlDataSource dsDef = (SqlDataSource)lvResponseNames.InsertItem.FindControl("sdsQuestions") as SqlDataSource;
DataView dvDef = (DataView)dsDef.Select(DataSourceSelectArguments.Empty);
Response.Write("Checking " + dvDef.Count + " records found in datasource 'Default'. <br />");
//Additional Quesetions
ListView lvAQs = (ListView)lvResponseNames.InsertItem.FindControl("lvAdditionalQs") as ListView;
Response.Write("Checking " + lvAQs.Items.Count + " Additional list view items. <br />");
SqlDataSource dsAQs = (SqlDataSource)lvResponseNames.InsertItem.FindControl("sdsAdditionalQuestions") as SqlDataSource;
DataView dvAQs = (DataView)dsAQs.Select(DataSourceSelectArguments.Empty);
Response.Write("Checking " + dvAQs.Count + " records found in datasource 'Additional'. <br />");
...
}
,其輸出:
Checking 9 Defualt list view items.
Checking 9 records found in datasource 'Default'.
Checking 0 Additional list view items.
Checking 6 records found in datasource 'Additional'.
的「0附加」應改爲6,就像默認之一,但是對於我的生活,我無法弄清楚爲什麼它不能「看到」所有的ItemTemplates。
任何想法或想法現在如何調試?
更新4/1/14 9:45 PM:增加了sqldatasource SelectCommands,因爲問題似乎連接到第二個SqlDataSource上的ControlParameter。
當選擇命令是:
SelectCommand="SELECT col1, col2, col3 from tbl where id=0"
它工作正常。
但是當它是:
SelectCommand="SELECT col1, col2, col3 from tbl where [email protected]"
發現的項目爲0。不知怎的,它沒有找到控制ID,即使數據源是找到9個項目。
你如何將值傳給'@ CourseId'?我會仔細檢查你是否正確地傳遞了這個參數,因爲它顯然沒有讀取它。 –
我想你應該將它傳遞給你的'Select'語句,不是嗎?希望有所幫助。 –
感謝@MilesWatson,這似乎是發生了什麼事。我不確定部分代碼複製到此處,但尚未顯示,請注意page_load中已設置hfCourseId,因此我不確定爲什麼嵌套列表視圖沒有選中它。但是我改變了一下代碼,並使用了一個asp:QueryStringParameter來代替,並且這樣做了。謝謝! – russds