页面aspx里面有一个DataSet ds,且他下面的几个用户控件uc1,uc2,uc3都有用到这个ds相同的数据,所以我想要让这个ds在整个页面中使用

    技术2022-05-11  78

    原回:

    页面aspx里面有一个DataSet ds,且他下面的几个用户控件uc1,uc2,uc3都有用到这个ds相同的数据,所以我想要让这个ds在整个页面中使用

    以下是cpp2017(幕白兄) 的方法:

    方法一:添加属性

    ascx:

    private DataSet ds

    public DataSet _ds

    {

        get

        {

            return ds;

        }

        set

        {

            ds=value;

        }

    }

    aspx:

    DataSet myds=new DataSet();

    ...//这里绑定myds

    uc1._ds=myds

    -------------------------------------------

    方法二:事件委托

    ascx:

    public EventHandler UsbBttonClicked

    aspx:

    ((yourUserControlType)yourUserControl).usbButtonClicked += .....

    -----------------------------------------------

    方法三:Eddie005(♂) №.零零伍 (♂) 好像是接口

    public class BasePage : System.Web.UI.Page

    {

       public DataSet ds = null;

    }

     

    public class WebForm1 : BasePage

    {

    private void Page_Load(object sender, System.EventArgs e)

    {

                 ds = new DataSet();

                 //...

             }

    }

     

    public class MyWebUserControl : System.Web.UI.UserControl

    {

         pirvate void Button1_Click(object sender,System.EventArgs e)

         {

             DataSet myDs = ((BasePage)Page).ds;

             this.DataGrid.DataSource = myDs;

             //....

         }

    }

     

    -----------------------------------------------------------------

    方法一:直接,但是要对每一个ascx都要添加属性,且aspx都要进行赋值;

    方法二:代码比较多,但是可以进行再处理

    方法三:定义了一次后每个地方都可以使用

     

    个人看以上三种,方法一程序效率应该最好,但二和三就不清楚

    问大家这种情况的时候会用哪一种还有下以上三种的区别

    个人认为,建议使用类似于方法二的做法。每一个控件加一个方法:如BindData(DataSet ds)

    在调用用户控件的时候,不使用该方法就不显示相应结果。

     

    比如:DataGrid控件,你要使用它,就必须得到datasource,然后绑定。

    这种写法,对调用对象没有统一的接口要求。用户控件的普遍适用性较强。

     

     

     


    最新回复(0)