当我使用下拉列表的SelectedItem.Text
作为传递给ObjectDataSource的值时,会发生此错误。
这是标记
<asp:ObjectDataSource ID="odsInsert" runat="server" SelectMethod="GetStudentInClass2" TypeName="MIHE_MIS.DALS.MidTermExamResultDAL">
<SelectParameters>
<asp:ControlParameter DefaultValue="" ControlID="ddlClasses" Name="classCode" PropertyName="SelectedItem.Text" Type="String" />
<asp:ControlParameter ControlID="ddlSemesters" Name="semesterID" PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter ControlID="ddlSpecialization" Name="specializationID" PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
此外,我动态地将Select Class
文本添加到下拉列表中。
protected void ddlClasses_DataBound(object sender, EventArgs e)
{
ListItem list = new ListItem("Select Class", "-1");
this.ddlClasses.Items.Insert(0, list);
}
答案 0 :(得分:0)
如果您查看semesterID
的标记,它会绑定到SelectedValue
,预计会Int32
。如果您现在查看classCode
的标记,则会在同一对象上绑定SelectedValue.Text
。我们从第一个实例知道SelectedValue
是Int32
,它没有名为Text
的属性。您需要更正绑定到正确的对象和属性类型。
根据上述代码,ObjectDataSource
将无法从SelectedItem.Text
中挑选出来的文字。为了解决这个问题,您需要修改ObjectDataSource
以获得Selecting
这样的事件;
<asp:ObjectDataSource ID="odsInsert" runat="server" SelectMethod="GetStudentInClass2"
TypeName="MIHE_MIS.DALS.MidTermExamResultDAL"
OnSelecting="odsInsert_Selecting">
<SelectParameters>
<asp:Parameter Name="classCode" Type="String" />
<asp:ControlParameter ControlID="ddlSemesters" Name="semesterID" PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter ControlID="ddlSpecialization" Name="specializationID" PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
然后在您的代码中,您已宣布事件;
protected void odsInsert_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
e.InputParameters["classCode"] = ddlClasses.SelectedItem.Text;
}