2017-10-10 106 views
1

当我使用下拉列表的SelectedItem.Text作为传递给ObjectDataSource的值时,会发生此错误。 这里是标记DataBinding:'System.String'不包含名称为'Text'的属性

<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

你的'PropertyName'应该只是'Text',而不是一个属性。活页夹不理解子属性 – DiskJunky

+0

我有ClassID,它是一个整数作为下拉列表的值 –

+0

我错误的那个。实际上这是SelectedItem.Text –

回答

0

如果你看一下标记为semesterID,它结合SelectedValue预计将Int32。如果您现在查看classCode的标记,则您在同一个对象上绑定到SelectedValue.Text。我们从一开始就知道SelectedValueInt32,它没有名为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; 
} 
+0

我错误输入了该信息。我更新了我的问题 –

+0

错误消失了,但问题仍然存在。我没有得到任何数据,这是因为SelectedItem.Text objectdataSource无法获取SelectedItem.Text –

+0

您需要挂钩ObjectDataSource的'Selecting'事件并以编程方式提供参数。你不能以你需要的方式直接绑定。 – DiskJunky

相关问题