0

スライドショー エクステンダーを動的に使用してスライドショーを作成しています。私のWebサービスコードは:-

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static AjaxControlToolkit.Slide[] GetSlides()
{
    AjaxControlToolkit.Slide[] slides = new AjaxControlToolkit.Slide[tblData.Tables[Count_w].Rows.Count];
    for (int i = 0; i < tblData.Tables[Count_w].Rows.Count; i++)
    {
        DataRow dr = tblData.Tables[Count_w].Rows[i];
        slides[i] = new AjaxControlToolkit.Slide(dr["imgurl"].ToString(), dr["header"].ToString(), dr["descr"].ToString());
    }
    Count_w++;
    return slides;
}

なぜこれが起こっているのかについての手がかり。Web サービスにハードコーディングを含めてみましたが、うまくいきました。作業コード:-

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static AjaxControlToolkit.Slide[] GetSlides()
{
    return new AjaxControlToolkit.Slide[] { 
        new AjaxControlToolkit.Slide("Help/1.png", "Add new server", "Login on server"),
        new AjaxControlToolkit.Slide("Help/2.png", "Add new server", "Login success"),
        new AjaxControlToolkit.Slide("Help/3.png", "Add new server", "Create new user"),
        new AjaxControlToolkit.Slide("Help/4.png", "Add new server", "Test user")};
    return slides;
}

動的人口が機能しない理由を教えてください。どちらのメソッドも同じ結果を返します。

4

1 に答える 1

0

余分なスラッシュを削除することで問題が解決しました。

これを変える

dr["imgurl"].ToString()

これで

dr["imgurl"].ToString().Replace("\\", "/")

更新されたコード

[WebMethod]
public AjaxControlToolkit.Slide[] GetSlides(DataTable dt)
{
    AjaxControlToolkit.Slide[] slides = new AjaxControlToolkit.Slide[dt.Rows.Count];
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        DataRow dr = dt.Rows[i];
        slides[i] = new AjaxControlToolkit.Slide(dr["imgurl"].ToString().Replace("\\", "/"), dr["header"].ToString(), dr["descr"].ToString());
    }
    return slides;
}
于 2013-03-30T06:44:25.860 に答える