我正在使用Webservice,它将通过数据表从数据库中返回数据,我将数据表转换为字节数组。在前端,我会将字节数组重新转换为数据表,并使用ajaxloader将其显示在表单中..这是动态加载。因此,无论数据大小如何,每次点击都需要10秒钟的时间才能收回数据。所以,我使用静态数据表,并且在页面加载事件中加载了该数据表中的所有数据。但是,没有反应。它只是在同一时间。即使没有数据需要检索,ajax加载器仍会继续加载10秒钟。问题是与Ajax或我的web服务? Plz,告诉我一些其他的想法??如何加速从数据库中加载数据
我对listboxclick事件代码
protected void listboxcity_SelectedIndexChanged(object sender, EventArgs e)
{
string sqlvalue = string.Empty;
//Thread.Sleep(200);
for (int i = 0; i < listboxcity.Items.Count; i++)
{
if (listboxcity.Items[i].Selected == true)
sqlvalue += listboxcity.Items[i].ToString() + ",";
}
if (sqlvalue.EndsWith(","))
{
sqlvalue = sqlvalue.Remove(sqlvalue.Length - 1);
}
txtprefcity.Text = sqlvalue;
if (txtprefcity.Text != string.Empty)
{
listboxarea.Items.Clear();
txtprefarea.Text = "";
try{
string[] strarea = txtprefcity.Text.ToString().Split(',');
foreach (String s in strarea)
{
DataTable dtarea = new DataTable();
DataTable dt = bc.ConvertByteToDataTable(objservice.GetData("getdistrictbyname", new object[] { s }));
foreach (DataRow r in dt.Rows)
dtarea = bc.ConvertByteToDataTable(objservice.GetData("getarea", new object[] { int.Parse(r["countryid"].ToString()), int.Parse(r["stateid"].ToString()), int.Parse(r["districtid"].ToString()) }));
foreach (DataRow rw in dtarea.Rows)
{
listboxarea.Items.Add(rw["areaname"].ToString());
}
}
}
catch (Exception ex)
{
ObjLog.Write(ex.Message);
}
}
}
Web方法如下:
public byte[] GetData(string StoredProcedureName, params object[] ParameterValues)
{
GC.Collect();
using (SqlConnection MyConnection = new SqlConnection(connectionstring))
{
using (SqlCommand MyCommand = new SqlCommand(StoredProcedureName, MyConnection))
{
using (SqlDataAdapter MyAdapter = new SqlDataAdapter())
{
MyConnection.Open();
MyCommand.CommandType = CommandType.StoredProcedure;
MyAdapter.SelectCommand = MyCommand;
SqlCommandBuilder.DeriveParameters(MyCommand);
int Index = 0;
foreach (SqlParameter Parameter in MyCommand.Parameters)
{
if (Parameter.Direction == ParameterDirection.Input || Parameter.Direction == ParameterDirection.InputOutput)
{
if (ParameterValues[Index] != null)
{
if (ParameterValues[Index].ToString() != string.Empty)
{
Parameter.Value = ParameterValues[Index];
}
else
{
Parameter.Value = DBNull.Value;
}
}
else
{
Parameter.Value = DBNull.Value;
}
Index++;
}
}
using (DataTable ds = new DataTable())
{
MyAdapter.Fill(ds);
MyConnection.Close();
return convertdatatabletobytearray(ds);
}
}
}
}
}
发表我的代码..它是如此简单的查询只..数据也只有更少..我尝试删除转换..但是,我得到同样的效果..我想ajaxloader的问题??但是,我不能没有Ajax – Nila 2010-01-25 09:33:46