bamzi software
شنبه 01 مرداد 1390, 16:49 عصر
سلام دوستان
من در وب سرويس متدي نوشتم كه نتيجه به صورت چند ركورد هست و به همين خاطر اون رو در 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();
GridView1.DataSource = datatb.GetTest();
GridView1.DataBind();
}
اما در خط مشخص شده با رنگ قرمز با چنين خطايي مواجه ميشم:
Data source is an invalid type. It must be either an IListSource, IEnumerable, or IDataSource.
مشكل از كجاست؟ بايد در سمت كلاينت نوع مقدار بازگشتي را تغيير دهم؟
من در وب سرويس متدي نوشتم كه نتيجه به صورت چند ركورد هست و به همين خاطر اون رو در 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();
GridView1.DataSource = datatb.GetTest();
GridView1.DataBind();
}
اما در خط مشخص شده با رنگ قرمز با چنين خطايي مواجه ميشم:
Data source is an invalid type. It must be either an IListSource, IEnumerable, or IDataSource.
مشكل از كجاست؟ بايد در سمت كلاينت نوع مقدار بازگشتي را تغيير دهم؟