چرا مقدار بازگشتي datatable از سمت وب سرويس، در ديتاسورس gridview در سمت كلاينت قرار

roebuck

Member
سلام دوستان

من در وب سرويس متدي نوشتم كه نتيجه به صورت چند ركورد هست و به همين خاطر اون رو در datatable قرار دادم.

در قسمت كلاينت كه اين متد رو فراخواني ميكنم ، براي قرار دادن در gridview با خطا روبرو ميشم.

متد وب سرويس اين هست:

کد:
 [WebMethod]
    public DataTable GetTest(string Syml, DateTime DTE1, DateTime DTE2)
    {
        

        string sql = " select Symbol,DateTime,H5 from FX_Forecast where  Symbol='" + Syml + "' and DateTime BETWEEN '" + DTE1 + "'AND'" + DTE2 +  "'";

        OpenDb();
        cmd = new SqlCommand(sql, con);
        dr = cmd.ExecuteReader();

        DataTable dt = new DataTable("DTB");
        dt.Columns.Add("Symbl", typeof(string));
        dt.Columns.Add("DT", typeof(DateTime));
        dt.Columns.Add("H5", typeof(string));

      while (dr.Read())
     {
            DataRow row = dt.NewRow();
            row["Symbl"] = dr["Symbol"];
            row["DT"] = dr["DateTime"];
            row["H5"] = dr["H5"];
            dt.Rows.Add(row);
      }
        return dt;

        con.Close();

    }

و در سمت كلاينت هم با زدن دكمه متد وب سرويس فراخواني ميشود:

کد:
protected void Button1_Click(object sender, EventArgs e)
    {
        localhost.Service datatb = new localhost.Service();
[COLOR=red]GridView1.DataSource = datatb.GetTest();[/COLOR]
GridView1.DataBind();
       
    }

اما در خط مشخص شده با رنگ قرمز با چنين خطايي مواجه ميشم:

کد:
Data source is an invalid type.  It must be either an IListSource, IEnumerable, or IDataSource.

مشكل از كجاست؟ بايد در سمت كلاينت نوع مقدار بازگشتي را تغيير دهم؟
 

MDP

Well-Known Member
اینو امتحان کن :

کد:
protected void Button1_Click(object sender, EventArgs e)
    {
        localhost.Service datatb = new localhost.Service();
GridView1.DataSource =(DataTable) datatb.GetTest();
GridView1.DataBind();
       
    }
 

جدیدترین ارسال ها

بالا