Beispiel #1
0
        private void CreateNestedPanel(GridPanel panel,
            GridRow row, DataRelation dr, StringBuilder sb)
        {
            DataTable ct = dr.ChildTable;

            bool autogen = true;
            ProcessChildRelations crProcess = _Panel.ProcessChildRelations;

            if (_Panel.SuperGrid.DoDataBindingStartEvent(
                _Panel, row, ct.TableName, ref autogen, ref crProcess) == false)
            {
                sb.Length = 0;

                for (int i=0; i<dr.ParentColumns.Length; i++)
                {
                    DataColumn col = dr.ParentColumns[i];

                    GridColumn gc =
                        FindGridColumn(panel, col.ColumnName);

                    if (gc != null)
                    {
                        if (sb.Length > 0)
                            sb.Append(" AND ");

                        sb.Append("[" + dr.ChildColumns[i] + "]=");
                        sb.Append("'" + row.Cells[gc.ColumnIndex].Value + "'");
                    }
                }

                string t = sb.ToString();

                DataView view = new
                    DataView(ct, t, "", DataViewRowState.CurrentRows);

                if (view.Count > 0 ||
                    _Panel.ProcessChildRelations == ProcessChildRelations.Always)
                {
                    GridPanel ipanel = new GridPanel();

                    ipanel.Name = ct.TableName;
                    ipanel.AutoGenerateColumns = autogen;

                    ipanel.SetDataSource(panel.DataSource);
                    ipanel.SetDataMember(ct.TableName);

                    ipanel.DataBinder.DataView = view;

                    ipanel.DataBinder.BaseDataSource = ipanel.DataSource;
                    ipanel.DataBinder.BaseDataMember = ipanel.DataMember;

                    row.Rows.Add(ipanel);

                    ipanel.DataBinder.AddDataTable(ct, autogen, crProcess);
                }
                else
                {
                    view.Dispose();
                }
            }
        }