Get GridView in Multiple UserControl from codebehind

后端 未结 2 1818
遥遥无期
遥遥无期 2021-01-26 18:31

IpInterfaceUC UserControl:

相关标签:
2条回答
  • 2021-01-26 19:10

    Expose the gridview through a public property on your UserControl:

    public GridView Grid
    {
      get { return gvChannelUC; }
    }
    

    Then

    List<string, string> Grids = new List<string, string>(); // <UCId, GridId>
    ...
    ctrIpInterfaceUC = (Test2.SetupGroup.Ipservice.IpInterfaceUC)LoadControl("IpInterfaceUC.ascx");
    string Id = "device_"+ip+"_"+port+"$"+indexInterface;
    
    GridView ctrGridView = ctrIpInterfaceUC.Grid;
    Grids.Add(Id, ctrGridView.ClientID);
    
    Control ctr = (Control)ctrIpInterfaceUC;
    ctr.ID = Id
    phDevices.Controls.Add(ctr);//PlaceHolder for add many UserControl
    ...
    
    0 讨论(0)
  • 2021-01-26 19:19

    While you can recursively use FindControl to find it, a much better approach is to let the UserControl IpInterfaceUC decide how to bind data to the controls within it.

    You could add a public method ShowData to you UserControl and pass the data to be displayed to it. It can then assign it to gvChannelUC.

    int indexInterface=0;
    foreach (DataRow row in dtDevicesListByRole.Rows)
    {
        var ctrIpInterfaceUC = (Test2.SetupGroup.Ipservice.IpInterfaceUC)LoadControl("IpInterfaceUC.ascx");
        ctrIpInterfaceUC.ShowData(myRows);
        ctrIpInterfaceUC.ID = "device_"+ip+"_"+port+"$"+indexInterface;
        phDevices.Controls.Add(ctrIpInterfaceUC);//PlaceHolder for add many UserControl
    }
    
    0 讨论(0)
提交回复
热议问题