Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据绑定:';System.String';不包含名为';文本';_C#_Asp.net_Objectdatasource - Fatal编程技术网

C# 数据绑定:';System.String';不包含名为';文本';

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

当我使用dropdownlist的
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;
}