在C#中的用户定义的类中无法访问控件ID

时间:2012-09-11 10:38:22

标签: c# asp.net class

我有一个querystring.aspx文件,里面有一个gridview。

在querystring.cs文件的默认类

public partial class querystring : System.Web.UI.Page

我可以访问gridview控件ID。我在此类下面创建了另一个类,但它没有访问gridview控件ID。

这是querystring.cs文件中用户定义的类代码: -

public partial class bindingmethod : System.Web.UI.Page
{

    public void show()
    {
        SqlConnection con = new SqlConnection(getconnectionstring());
        SqlCommand cmd = new SqlCommand();
        DataTable dt = new DataTable();
        cmd.Connection = con;
        con.Open();
        SqlDataAdapter adb = new SqlDataAdapter("show_answers", con);
        adb.Fill(dt);

       GridView1.DataSource = dt;

        GridView1.DataBind();
    }
    //Get a connection string to make a db connection
    public static string getconnectionstring()
    {
        return System.Configuration.ConfigurationManager.ConnectionStrings["crudconnection1"].ConnectionString;
    }
}

对于GridView1,它说:

The name GridView1 does not exist in the current context.    

请帮帮我。 谢谢。

3 个答案:

答案 0 :(得分:0)

这没有任何意义,bindingmethod不是System.Web.UI.Page因此我不知道你为什么继承它。此外,Grid / GridViewquerystring页面的一部分,因此您只能从该页面访问它们。

我认为您要做的是将show / getconnectionstring方法移到querystring课程中,完全摆脱bindingmethod

答案 1 :(得分:0)

您的aspx页面顶部在页面属性中有一个属性Inherits="querystring"。这是将您的aspx页面链接到类querystring后面的代码。由于您创建了一个新类bindingmethod,因此它与aspx页面无关。您无法从多个类继承aspx页面,aspx页面中的对象(如GridView1)对您的新类不会以任何方式显示。

我不确定你为什么要创建一个新类。您似乎只需要在querystring类中使用其他方法,并且需要在Page_Load事件中调用该方法。

答案 2 :(得分:0)

您只需将对GridView的引用传递给新的类/方法。

来自你的querystring.cs类:

bindingmethod b = new bindingmethod();
b.show(this.GridView1);

BindingMethod.cs

public class bindingmethod 
{ 
    public void show(GridView gridView) 
    { 
        using(SqlConnection con = new SqlConnection(getconnectionstring()))
        using(SqlCommand cmd = new SqlCommand())
        {
            using(DataTable dt = new DataTable())
            {
              cmd.Connection = con; 
              con.Open(); 

              using(SqlDataAdapter adb = new SqlDataAdapter("show_answers", con))
              {
                  adb.Fill(dt); 

                  gridView.DataSource = dt; 

                  gridView.DataBind(); 
              }
           }
        }
    } 

    //Get a connection string to make a db connection 
    public static string getconnectionstring() 
    { 
        return System.Configuration.ConfigurationManager.ConnectionStrings["crudconnection1"].ConnectionString; 
    } 
}