C# 数据绑定:';System.String';不包含名为';文本';
当我使用dropdownlist的C# 数据绑定:';System.String';不包含名为';文本';,c#,asp.net,objectdatasource,C#,Asp.net,Objectdatasource,当我使用dropdownlist的SelectedItem.Text作为要传递给ObjectDataSource的值时,会发生此错误。 这是标记 <asp:ObjectDataSource ID="odsInsert" runat="server" SelectMethod="GetStudentInClass2" TypeName="MIHE_MIS.DALS.MidTermExamResultDAL"> <SelectParameters&g
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>
如果查看
semesterID
的标记,它将绑定到SelectedValue
,该值应为Int32
。如果您现在查看classCode
的标记,您将绑定到同一对象上的SelectedValue.Text
。我们从第一个实例知道,SelectedValue
是Int32
,它没有名为Text
的属性。您需要将绑定更正为正确的对象和属性类型
基于上述代码,ObjectDataSource
将无法从SelectedItem.text
中选择文本。为了避免这种情况,您需要修改ObjectDataSource
以使像这样选择事件
<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>
您的PropertyName
应该只是Text
,而不是属性。活页夹不了解子属性。我的ClassID是一个整数,与DropDownList的值相同。但是,我输入了错误的ClassID。实际上,这是SelectedItem.TextYes,但您仍然无法绑定到SelectedValue
的子属性。它需要是顶级属性错误已经消失,但问题仍然存在。我没有得到任何数据,这是因为SelectedItem.Text objectdataSource无法获得SelectedItem.Text您需要连接到objectdataSource
的选择事件,并以编程方式提供参数。您不能按需要的方式直接绑定。@ElhamKohestani,我已经更新了我的答案,告诉您如何提供SelectedItem.Text
它不起作用。我将datasource更改为DataTable,它运行良好,但使用objectDataSource它不工作,我不知道:(@ElhamKohestani哪个部分不起作用了?我实际上是根据我们在生产中的代码制作了上面的代码示例-它应该起作用。你看到了什么?
<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;
}