public static void test()
{
GetDictionaryInfoByCondition();//出问题,静态方法不能直接调用非静态方法,实例化不行
}
在WebMethod中怎么调用同页面的GetDictionaryInfoByCondition()方法,实例化不行
private void GetDictionaryInfoByCondition()
{
DataTable dtPatientInfos = RelatedDictionaryInfoManager.GetDictionaryInfoByCondition(AspNetPager1.StartRecordIndex - 1, AspNetPager1.PageSize);
//绑定数据
this.gvDictionaryInfos.DataSource = dtPatientInfos;
this.gvDictionaryInfos.DataBind();
}
在test中实例化对象是不行的,请高手求解,谢谢
24 个解决方案
#1
定义一个静态方法A,把非静态方法中的实例部分做为参数传给A,在A内部处理。
#2
将对象实例作为参数传递给test方法。
#3
lz解释了...
#4
webservice ?
静态方法有什么用?
静态方法有什么用?
#5
补充一点:静态方法实在js中调用的,顺序是js调用静态方法,静态方法调用非静态方法
#6
能用js调用?
静态方法没有context,根本不满足web的应用场景, 能调用吗?
静态方法没有context,根本不满足web的应用场景, 能调用吗?
#7
想再js中实现数据绑定?你的想法不好,js调用静态方法是为了实现ajax异步数据传输,不是这样用的
#8
不好意思,没用过js调用方法,查了一下还真是必须是静态方法,那这个方法是跟这个类本身没多大关系的,所以
参数还是自己穿进去吧,静态方法是没有this的。
参数还是自己穿进去吧,静态方法是没有this的。
#9
谁说静态方法不能访问 context,HttpContext.Current 就是当前的 context,只要请求进了 Http 管线,就可以访问到 context,不管是静态还是非静态方法。
只不过楼主没有弄清楚一个问题,Ajax 请求和原有的请求根本就不是同一个请求,你用另外一个请求来刷新原有页面,必须在前台用 JS 来重新填充需要填充的节点。
至于静态方法要调用非静态方法,那得在静态方法中实例化一个当前类的对象,比如当前页面类是 _Default:
_Default d = new _Default();
d.GetDictionaryInfoByCondition();
这个跟 ASP.NET 没关系,不过是 C# 的基础知识而已。
不过楼主的这个结构做得可不好,为什么要做成一个 WebService,然后来调用呢?
#10
因为你没有理解ajax ,所以现在的思路是错误的
#11
你可以这样
[System.Web.Services.WebMethod]
public static void test()
{
TestClass x = new TestClass();
x.GetDictionaryInfoByCondition();
}
public class TestClass
{
private void GetDictionaryInfoByCondition()
{
DataTable dtPatientInfos = RelatedDictionaryInfoManager.GetDictionaryInfoByCondition(AspNetPager1.StartRecordIndex - 1, AspNetPager1.PageSize);
//绑定数据
this.gvDictionaryInfos.DataSource = dtPatientInfos;
this.gvDictionaryInfos.DataBind();
}
}
[System.Web.Services.WebMethod]
public static void test()
{
TestClass x = new TestClass();
x.GetDictionaryInfoByCondition();
}
public class TestClass
{
private void GetDictionaryInfoByCondition()
{
DataTable dtPatientInfos = RelatedDictionaryInfoManager.GetDictionaryInfoByCondition(AspNetPager1.StartRecordIndex - 1, AspNetPager1.PageSize);
//绑定数据
this.gvDictionaryInfos.DataSource = dtPatientInfos;
this.gvDictionaryInfos.DataBind();
}
}
#12
我原来以为你用的是 webservice
#13
静态方法 不能直接调用 非静态方法,但 通过实例化对象 应该能调用
public class xxx
{
public static void test()
{
new xxx().GetDictionaryInfoByCondition();
}
private void GetDictionaryInfoByCondition()
{
DataTable dtPatientInfos = RelatedDictionaryInfoManager.GetDictionaryInfoByCondition(AspNetPager1.StartRecordIndex - 1, AspNetPager1.PageSize);
//绑定数据
this.gvDictionaryInfos.DataSource = dtPatientInfos;
this.gvDictionaryInfos.DataBind();
}
}
public class xxx
{
public static void test()
{
new xxx().GetDictionaryInfoByCondition();
}
private void GetDictionaryInfoByCondition()
{
DataTable dtPatientInfos = RelatedDictionaryInfoManager.GetDictionaryInfoByCondition(AspNetPager1.StartRecordIndex - 1, AspNetPager1.PageSize);
//绑定数据
this.gvDictionaryInfos.DataSource = dtPatientInfos;
this.gvDictionaryInfos.DataBind();
}
}
#14
如果不行,能不能给出解决方案啊,谢谢
#15
ajax方式填充GridView
http://blog.csdn.net/sandy945/article/details/6925893
Repeater 无刷新分页
http://blog.csdn.net/sandy945/article/details/4208998
http://blog.csdn.net/sandy945/article/details/6925893
Repeater 无刷新分页
http://blog.csdn.net/sandy945/article/details/4208998
#16
楼上的那些实例化NEW我都试过了,虽然程序没报错,但运行后没达到效果,没用。
我也遇到和楼主同样的问题,现在仍然没有解决,也试过很多方法都不行,总觉得还是应该怎么在静态方法中把非静态的一些属性字段比如sqldatareader这些给引用才行,但不知道怎么引用。
楼主用的是前台JS中ajax传递到后台的某一个方法中,这个方法必须是静态的,而在这个静态方法中要进行一系列数据操作,可问题就在这里,静态方法里面很多非静态的都用不了。
NER实例化,然后调用普通方法,按道理这种是最容易想到的而且最合适的,很可惜没有效果。
上面还有人说将对象实例作为参数传递给test方法,这个不知道具体是什么意思,能不能提供简单的代码。。。。。
我也遇到和楼主同样的问题,现在仍然没有解决,也试过很多方法都不行,总觉得还是应该怎么在静态方法中把非静态的一些属性字段比如sqldatareader这些给引用才行,但不知道怎么引用。
楼主用的是前台JS中ajax传递到后台的某一个方法中,这个方法必须是静态的,而在这个静态方法中要进行一系列数据操作,可问题就在这里,静态方法里面很多非静态的都用不了。
NER实例化,然后调用普通方法,按道理这种是最容易想到的而且最合适的,很可惜没有效果。
上面还有人说将对象实例作为参数传递给test方法,这个不知道具体是什么意思,能不能提供简单的代码。。。。。
#17
不知道你们想问的是什么?
调用不了,就实例化一下,变通一下不就可以了
调用不了,就实例化一下,变通一下不就可以了
#18
就是因为实例化也没有效果所以才问的,我和LZ遇到的问题一样,不信兄台可以自己试下。程序没问题,但就是没效果,比如在静态里面实例化sqldatareader,结果读不出数据。
#19
把要调用的方法也写静态的
#20
如果吧调用的方法也写静态的,干嘛还纠结这个问题
#21
。实例化后,非静态方法是执行不了的。。。虽然不会报错
#22
发帖时间 2011-12-16 ,lz这个是11年的帖,你现在还在纠结这个问题。。。
#23
作为低手 我只好看看
#24
想调用非静态的方法应该是想给服务器控件绑定数据吧,不过很可惜,不管怎么实例化都没办法调用到页面的服务器控件
#1
定义一个静态方法A,把非静态方法中的实例部分做为参数传给A,在A内部处理。
#2
将对象实例作为参数传递给test方法。
#3
lz解释了...
#4
webservice ?
静态方法有什么用?
静态方法有什么用?
#5
补充一点:静态方法实在js中调用的,顺序是js调用静态方法,静态方法调用非静态方法
#6
能用js调用?
静态方法没有context,根本不满足web的应用场景, 能调用吗?
静态方法没有context,根本不满足web的应用场景, 能调用吗?
#7
想再js中实现数据绑定?你的想法不好,js调用静态方法是为了实现ajax异步数据传输,不是这样用的
#8
不好意思,没用过js调用方法,查了一下还真是必须是静态方法,那这个方法是跟这个类本身没多大关系的,所以
参数还是自己穿进去吧,静态方法是没有this的。
参数还是自己穿进去吧,静态方法是没有this的。
#9
谁说静态方法不能访问 context,HttpContext.Current 就是当前的 context,只要请求进了 Http 管线,就可以访问到 context,不管是静态还是非静态方法。
只不过楼主没有弄清楚一个问题,Ajax 请求和原有的请求根本就不是同一个请求,你用另外一个请求来刷新原有页面,必须在前台用 JS 来重新填充需要填充的节点。
至于静态方法要调用非静态方法,那得在静态方法中实例化一个当前类的对象,比如当前页面类是 _Default:
_Default d = new _Default();
d.GetDictionaryInfoByCondition();
这个跟 ASP.NET 没关系,不过是 C# 的基础知识而已。
不过楼主的这个结构做得可不好,为什么要做成一个 WebService,然后来调用呢?
#10
因为你没有理解ajax ,所以现在的思路是错误的
#11
你可以这样
[System.Web.Services.WebMethod]
public static void test()
{
TestClass x = new TestClass();
x.GetDictionaryInfoByCondition();
}
public class TestClass
{
private void GetDictionaryInfoByCondition()
{
DataTable dtPatientInfos = RelatedDictionaryInfoManager.GetDictionaryInfoByCondition(AspNetPager1.StartRecordIndex - 1, AspNetPager1.PageSize);
//绑定数据
this.gvDictionaryInfos.DataSource = dtPatientInfos;
this.gvDictionaryInfos.DataBind();
}
}
[System.Web.Services.WebMethod]
public static void test()
{
TestClass x = new TestClass();
x.GetDictionaryInfoByCondition();
}
public class TestClass
{
private void GetDictionaryInfoByCondition()
{
DataTable dtPatientInfos = RelatedDictionaryInfoManager.GetDictionaryInfoByCondition(AspNetPager1.StartRecordIndex - 1, AspNetPager1.PageSize);
//绑定数据
this.gvDictionaryInfos.DataSource = dtPatientInfos;
this.gvDictionaryInfos.DataBind();
}
}
#12
我原来以为你用的是 webservice
#13
静态方法 不能直接调用 非静态方法,但 通过实例化对象 应该能调用
public class xxx
{
public static void test()
{
new xxx().GetDictionaryInfoByCondition();
}
private void GetDictionaryInfoByCondition()
{
DataTable dtPatientInfos = RelatedDictionaryInfoManager.GetDictionaryInfoByCondition(AspNetPager1.StartRecordIndex - 1, AspNetPager1.PageSize);
//绑定数据
this.gvDictionaryInfos.DataSource = dtPatientInfos;
this.gvDictionaryInfos.DataBind();
}
}
public class xxx
{
public static void test()
{
new xxx().GetDictionaryInfoByCondition();
}
private void GetDictionaryInfoByCondition()
{
DataTable dtPatientInfos = RelatedDictionaryInfoManager.GetDictionaryInfoByCondition(AspNetPager1.StartRecordIndex - 1, AspNetPager1.PageSize);
//绑定数据
this.gvDictionaryInfos.DataSource = dtPatientInfos;
this.gvDictionaryInfos.DataBind();
}
}
#14
如果不行,能不能给出解决方案啊,谢谢
#15
ajax方式填充GridView
http://blog.csdn.net/sandy945/article/details/6925893
Repeater 无刷新分页
http://blog.csdn.net/sandy945/article/details/4208998
http://blog.csdn.net/sandy945/article/details/6925893
Repeater 无刷新分页
http://blog.csdn.net/sandy945/article/details/4208998
#16
楼上的那些实例化NEW我都试过了,虽然程序没报错,但运行后没达到效果,没用。
我也遇到和楼主同样的问题,现在仍然没有解决,也试过很多方法都不行,总觉得还是应该怎么在静态方法中把非静态的一些属性字段比如sqldatareader这些给引用才行,但不知道怎么引用。
楼主用的是前台JS中ajax传递到后台的某一个方法中,这个方法必须是静态的,而在这个静态方法中要进行一系列数据操作,可问题就在这里,静态方法里面很多非静态的都用不了。
NER实例化,然后调用普通方法,按道理这种是最容易想到的而且最合适的,很可惜没有效果。
上面还有人说将对象实例作为参数传递给test方法,这个不知道具体是什么意思,能不能提供简单的代码。。。。。
我也遇到和楼主同样的问题,现在仍然没有解决,也试过很多方法都不行,总觉得还是应该怎么在静态方法中把非静态的一些属性字段比如sqldatareader这些给引用才行,但不知道怎么引用。
楼主用的是前台JS中ajax传递到后台的某一个方法中,这个方法必须是静态的,而在这个静态方法中要进行一系列数据操作,可问题就在这里,静态方法里面很多非静态的都用不了。
NER实例化,然后调用普通方法,按道理这种是最容易想到的而且最合适的,很可惜没有效果。
上面还有人说将对象实例作为参数传递给test方法,这个不知道具体是什么意思,能不能提供简单的代码。。。。。
#17
不知道你们想问的是什么?
调用不了,就实例化一下,变通一下不就可以了
调用不了,就实例化一下,变通一下不就可以了
#18
就是因为实例化也没有效果所以才问的,我和LZ遇到的问题一样,不信兄台可以自己试下。程序没问题,但就是没效果,比如在静态里面实例化sqldatareader,结果读不出数据。
#19
把要调用的方法也写静态的
#20
如果吧调用的方法也写静态的,干嘛还纠结这个问题
#21
。实例化后,非静态方法是执行不了的。。。虽然不会报错
#22
发帖时间 2011-12-16 ,lz这个是11年的帖,你现在还在纠结这个问题。。。
#23
作为低手 我只好看看
#24
想调用非静态的方法应该是想给服务器控件绑定数据吧,不过很可惜,不管怎么实例化都没办法调用到页面的服务器控件