2010-07-19 40 views
0

我在同一个类中有两种方法,并想了解如何在第二种方法中使用第一种方法。C#在同一类中使用另一种方法中的方法

//第一种方法

public static void RefreshGridView(GridView GridView1) 
{ 
    GridView1.DataBind(); 
} 

//第二种方法

public static void AssignDefaultUserNameLetter(Literal categoryID, ObjectDataSource ObjectDataSource1) 
{ 
    // declare variable for filter query string 
    string userFirstLetter = HttpContext.Current.Request.QueryString["az"]; 

    // check for category ID 
    if (String.IsNullOrEmpty(userFirstLetter)) 
    { 
     // display default category 
     userFirstLetter = "%"; 
    } 

    // display requested category 
    categoryID.Text = string.Format(" ... ({0})", userFirstLetter); 

    // specify filter for db search 
    ObjectDataSource1.SelectParameters["UserName"].DefaultValue = userFirstLetter + "%"; 

    // HERE IS WHAT I DON"T KNOW HOW! 
    // GET SQUIGLY LINE 
    RefreshGridView(GridView1); 
} 

请注意上面的大写字母。那就是我试图调用第一种方法但获得红色下划线的地方。有人可以帮忙吗?谢谢。

+0

编译器告诉你什么错误? – 2010-07-19 00:14:28

回答

6

该方法被标记为static,但GridView1看起来像它是一个实例变量。

您需要更改该方法,以使AssignDefaultUserNameLetter不是静态的,或者以某种其他方式获取GridView,例如作为参数传入。

+0

安德鲁谢谢你!除了其他参数外,我还添加了参数(Gridview GridView1),它可以工作。这是一个正确的方法来做到这一点?谢谢。 – 2010-07-19 00:14:42

+0

我认为如果你的AssignDefaultUserNameLetter方法只从同一个类中调用,它应该可能是“私有”而不是“公共静态”,但不知道你在做什么,我不能肯定地说。 – 2010-07-19 00:20:43

0

您可能不希望这两种方法中的任何一种为static,因为它们看起来都是在您的类的实例变量(它似乎是一种形式)上运行。你有什么特别的理由让他们成为static

+0

原因是因为我无能为力。我无法弄清楚如何在我的代码中实例化它。 Visual Studio说:非静态字段需要对象引用。所以我把它变成静态的。我知道这不是一个聪明的举动,但我只是在学习和痛苦。 – 2010-07-19 00:25:05

相关问题