在后台的static方法中,像sqlDataReader等等一些都不能用了,没效果了

程序员济癫 2012-05-12 06:37:09
在后台的static方法中,像sqlDataReader等等一些都不能用了,没效果了

还有response这些也不能用了,后来我用HttpContext.current.response之后就可以用了。

但是sqldatareader这些还是不能用,也不知道该怎么在静态方法中引用出来。

之后在网上搜索了一些方法,用了其中的一种如下,有注释。


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();

}
}
}



调试之后没有问题,打印值也和预想一样,但是运行之后发现没有效果,前台文本框里面还是什么都没有。

不知道静态方法里面那些东西该怎么引用出来使用,求大神指点。
...全文
67 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员济癫 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

真头疼,您在静态方法里调用不到实例方法,这和 data reader 有半毛钱关系

把 updateDepart 那个 static 去掉
[/Quote]

---------------------------
兄台的意思我理解,估计是我写的有点乱了。

这个静态方法是前台ajax传过来的:
$.ajax({
type:"Post",
url:"DepartmentList.aspx/updateDepart?ids='"+ids+"'",//是这里传过去的,传过去后台必须是静态方法
contentType:"application/json;charset=utf-8",
dataType: "json",
success: function(data) {
alert("回调id:"+data.d);

}

});


所以后台那个必须是静态方法,在这个静态方法里面我想用sqldatareader,但敲代码时自动提示里面没有这些东西了。
因此才实例化这个类,调用下面的普通方法来用,普通方法里面可以直接用sqldatareader。

但运行结果仍是无效……纠结
程序员济癫 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

看着有点乱,静态方法直接通过类名调用,不用创建实例

UserManagement_DepartmentList.xxxxxx
[/Quote]

---------------------------------
是在这个静态方法中调用下面那个普通方法,不NEW一下然后调用就会报错。
theillusion 2012-05-12
  • 打赏
  • 举报
回复
真头疼,您在静态方法里调用不到实例方法,这和 data reader 有半毛钱关系

把 updateDepart 那个 static 去掉
bdmh 2012-05-12
  • 打赏
  • 举报
回复
看着有点乱,静态方法直接通过类名调用,不用创建实例

UserManagement_DepartmentList.xxxxxx

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧