我想打電話ObjectDataSource.Select()
給出了相同的結果調用ObjectDataSource.DataBind()
,但在某些情況下,這似乎並不爲真:爲什麼ObjectDataSource.DataBind()返回行,而ObjectDataSource.Select()不行?
<asp:ObjectDataSource ID="ODS1" TypeName="PersonDB" SelectMethod="GetPeople"
runat="server"></asp:ObjectDataSource>
<br>
<asp:ListBox ID="ListBox1" DataSourceID="ODS1" DataTextField="PersonID"
AutoPostBack="true" runat="server"></asp:ListBox>
<br>
<asp:ObjectDataSource ID="ODS2" InsertMethod="InsertEmployee"
TypeName="PersonDB" SelectMethod="GetPerson" runat="server">
<SelectParameters>
<asp:ControlParameter ConvertEmptyStringToNull="True" Name="PersonID"
PropertyName="SelectedValue" ControlID="ListBox1" />
</SelectParameters>
</asp:ObjectDataSource>
<br>
<asp:DetailsView ID="DetailsView1" AutoGenerateInsertButton="true" DataSourceID="ODS2"
runat="server"> </asp:DetailsView>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ODS1.Select(); //same as calling ODS1.DataBind();
}
if (IsPostBack)
{
ODS2.Select(); // returns no results
}
}
在上面的代碼中調用ODS1.Select()產生與調用相同的結果ODS1.DataBind()。但如果在回發用戶選擇列表框,ODS2.Select()仍然不會返回任何結果,但如果我們替換ODS2.Select();與ODS2.DataBind();然後返回一行。那麼爲什麼不ODS2.Select();返回任何結果,但是ODS2.DataBind();呢?
謝謝
編輯:
假設用戶在一個表中選擇一個項目 - >看來,當我們調用ODS2.Select(),ODS2出於某種原因無法綁定到ListBox1.SelectedValue並從此屬性提取值
第一次創建頁面時,DetailsView不會顯示任何結果,但是當用戶在列表框中選擇一個項目時,ODS2應該(並在調用ODS2.DataBind()時返回結果)。 – carewithl 2009-11-22 17:48:57
當列表框中沒有選中任何內容時,你如何處理該案例?當你第一次加載時可能是這種情況。 – 2009-11-22 19:17:37
確實,在第一次加載DetailsView時不顯示任何內容,但在回發時它應該,即使我們調用ODS2.Select(假設用戶在ListBox中選擇一個項目) – carewithl 2009-11-23 16:22:59