2017-10-10 81 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

相關問題