在后台的static方法中,像sqlDataReader等等一些都不能用了,没效果了
还有response这些也不能用了,后来我用HttpContext.current.response之后就可以用了。
但是sqldatareader这些还是不能用,也不知道该怎么在静态方法中引用出来。
之后在网上搜索了一些方法,用了其中的一种如下,有注释。
- C# code
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Web.Services;using System.Data.SqlClient;using System.IO;public partial class UserManagement_DepartmentList : System.Web.UI.Page{ public SqlDataReader sdr,sdr1,sdr2; public static SqlDataReader sdr3; public Model.Department department; public Service.DepartmentService ds; [WebMethod]//这是一个静态方法,因为有些东西不能用,所以我就在这里面调用下面的普通方法 public static string updateDepart() { string ids=HttpContext.Current.Request["ids"]; UserManagement_DepartmentList departmentlist = new UserManagement_DepartmentList(); departmentlist.selectByIdToName(ids);//在这里调用下面的方法 return ids; } //这是一个非静态的普通方法,测试过没有问题 public void selectByIdToName(string id) { if (Util.StringUtils.isNotBlank(id)) { string[] array = id.Split(",".ToCharArray()); ds = new Service.DepartmentService(); int v; int.TryParse(array[0], out v); sdr2 = ds.selectDepartmentById(v); while (sdr2.Read())//将选择的行id对应的值显示在文本框中 { DropDownList3.SelectedValue = sdr2.GetString(2); TextBox4.Text = sdr2.GetString(2); TextBox5.Text = sdr2.GetString(3); } //Response.Write(DropDownList3.SelectedValue + "|" + TextBox4.Text + "|" + TextBox5.Text); sdr2.Close(); } }}
调试之后没有问题,打印值也和预想一样,但是运行之后发现没有效果,前台文本框里面还是什么都没有。
不知道静态方法里面那些东西该怎么引用出来使用,求大神指点。
------解决方案--------------------------------------------------------
看着有点乱,静态方法直接通过类名调用,不用创建实例
UserManagement_DepartmentList.xxxxxx
------解决方案--------------------------------------------------------
真头疼,您在静态方法里调用不到实例方法,这和 data reader 有半毛钱关系
把 updateDepart 那个 static 去掉