【发布时间】:2009-11-22 17:32:22
【问题描述】:
我认为调用ObjectDataSource.Select() 与调用ObjectDataSource.DataBind() 的结果相同,但在某些情况下似乎并非如此:
<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() 相同的结果。但是如果在回发用户选择 ListBox 中的一个项目,ODS2.Select() 仍然不会返回任何结果,但是如果我们替换 ODS2.Select() ; 与 ODS2.DataBind(); 然后返回一行。那么为什么 ODS2.Select(); 不返回任何结果,而 ODS2.DataBind(); 呢?
谢谢
编辑:
假设用户在 Listbox 中选择一个项目 --> 似乎当我们调用 ODS2.Select() 时,ODS2 出于某种原因无法绑定到 ListBox1.SelectedValue 并从该属性中提取值
【问题讨论】:
标签: c# asp.net data-binding ado.net objectdatasource