在ASP.net C#中从主窗体调用用户控件公共函数的问题

时间:2014-03-28 16:25:33

标签: c# asp.net user-controls webusercontrol

我在ASP.net C#中创建了一个用户控件,其中包含一个Dropdownlist(下面称为LookupGrid)。现在在主窗体中,我想设置Combobox的数据源,但是在设置组合框的数据源的行上我得到NullExceptions

主要网络表单中的代码:

LookupGrid droplist = new LookupGrid();
droplist.ID = field.Name;
RecordSet lookupvalues = inRecs.ServiceClient.WebServiceClient.GetInstance().GetLookup("CurrentNRS_Admit", Convert.ToInt64(Session["UserID"].ToString()), field);
droplist.SetData(lookupvalues.ToDataSet());

在用户控件中:

protected void Page_Load(object sender, EventArgs e)
{

}
public void SetData(DataSet dTLookupValues)
{
    DropDownList1.DataSource = dTLookupValues.Tables[0];
}

我收到错误:

Object reference not set to an instance of an object.

在这一行:

DropDownList1.DataSource = dTLookupValues.Tables[0];

1 个答案:

答案 0 :(得分:1)

创建属性并从公共方法设置数据表。在页面加载中,您可以绑定数据

public DataTable MyData { get; set; }

protected void Page_Load(object sender, EventArgs e)
{
    DropDownList1.DataSource =MyData  ;
    DropDownList1.DataBind();
}

public void SetData(DataSet dTLookupValues)
{
    MyData  = dTLookupValues.Tables[0];
}

在您的主页

   protected void Page_Load(object sender, EventArgs e)
    {
        var control = (LookupGrid )LoadControl("~/LookupGrid.ascx");
        control.SetData(lookupvalues.ToDataSet());
        Panel1.Controls.Add(control); //add control to your page or panel
    }