2014-01-24 33 views
0

即時嘗試將下拉列表傳遞給公共函數,以便無論我爲任何下拉列表調用此函數,它都可以工作。我有多個有dropdownlist的頁面,我需要多次調用它。將下拉列表傳遞給公共函數

我已經聲明它是這樣在我的aspx:

<asp:DropDownList ID="DropDownListVType" runat="server" 
    DataSourceID="SqlDataSourceVesselType" DataTextField="Vessel_Type" 
    DataValueField="VType_ID" Width="160px" AutoPostBack="True" 
    CausesValidation="True" OnDataBound="ddl_DataBound"> 
</asp:DropDownList> 

,並在我的CS

PublicFunctions pubvar = new PublicFunctions(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    pubvar.ddl_DataBound(DropDownListVType); 
} 

,獨立的公共職能班級爲:

public string ddl_DataBound(DropDownList d) 
{ 
    return d.Items.Insert(0, new ListItem("--- Please Select ---", String.Empty)); 
} 

錯誤即時接收是:

不能隱式地將類型'void'轉換爲'字符串'

+0

真的很新鮮。如何檢查? – New2This

+0

插入返回void – Raghurocks

+0

現在它說aspx文件「 不包含'ddl_DataBound'的定義,並且沒有擴展方法'ddl_DataBound'接受類型'ASP.frm_vessels_aspx'的第一個參數可以找到(你是否缺少一個使用指令或程序集引用?) – New2This

回答

2

Insert返回void,所以你不能返回它。你的函數具有string返回類型,它應該具有的void返回類型:

public void ddl_DataBound(DropDownList d) 
{ 
    d.Items.Insert(0, new ListItem("--- Please Select ---", String.Empty)); 
} 
+0

現在它說aspx文件「不包含'ddl_DataBound'的定義,並且沒有可以找到接受'ASP.frm_vessels_aspx'類型的第一個參數的擴展方法'ddl_DataBound'(你是否缺少一個使用指令或程序集引用?) – New2This

+2

這是因爲您使用OnDataBound。這是一個事件。你放在那裏的名字必須存在於你的代碼後面(它沒有)。此外,該事件具有完全不同的簽名。 – Kenneth

+0

好吧,所以我已經把頁面加載ddl_DataBound(DropDownListVType);在CS文件我把保護無效ddl_DataBound(DropDownList d) { pubvar.ddl_DataBound(d); } 現在的錯誤是「ddl_DataBound」匹配的委託,沒有超載「System.EventHandler」 – New2This

1

您return語句的問題。

請將您的函數更改爲void並刪除返回值。

public void ddl_DataBound(DropDownList d) 
{ 
    d.Items.Insert(0, new ListItem("--- Please Select ---", String.Empty)); 
} 

目前你試圖返回Item.Insert()的返回值(這是一個無效)作爲字符串給調用者。

+0

它不是試圖返回函數,而是試圖返回void。此外,它不會拋出異常,這是一個編譯錯誤。 – Kenneth

+0

@Kenneth謝謝.. – Vogel612

相關問題