Example #1
0
        void ListViewClicked_tp2Lv(object sender, EventArgs e)
        {
            //This event means a row was selected by double-click
            if (e.GetType().Name == "DataGridViewCellEventArgs")
            {
                _tp2Lv.Visible = false;
                _tp2Dv = new ucDetailView();
                _tp2Dv.DetailClicked += DetailClicked_tp2Dv;
                _tp2Dv.Dock = System.Windows.Forms.DockStyle.Fill;

                //Comment out DynamicStuff method in user control
                //to see Main design view, if needed.

                //Todo: Wire actual id to detail view
                //Use _tp2Lv.DataRowViewSelected to get selected row info
                DataPayload d = new DataPayload();
                d = DAL.GetRecord("Customers", "CustomerID", "ALFKI");
                _tp2Dv.DataPayload = d;
                tabPage2.Controls.Add(_tp2Dv);

            }
        }
Example #2
0
        public static DataPayload GetRecord(string tableName, string fieldKey, string recordKey)
        {
            string queryString = string.Format(
            @"

            --Detail Row
            SELECT * FROM {0} WHERE {1}=@search;

            --Supporting Data for detail page.
            DECLARE @tableName NVARCHAR(50) = 'Customers'
            DECLARE @stmt NVARCHAR(MAX);

            SELECT * FROM SpecialTable1 WHERE TableName = @tableName;

            DECLARE @SqlStatementCursor CURSOR
            SET @SqlStatementCursor = CURSOR FAST_FORWARD
            FOR
            SELECT SqlStatements
            FROM SpecialTable1 WHERE TableName = @tableName;
            OPEN @SqlStatementCursor
            FETCH NEXT FROM @SqlStatementCursor
            INTO @stmt
            WHILE @@FETCH_STATUS = 0
            BEGIN

            EXEC (@stmt)

            FETCH NEXT FROM @SqlStatementCursor
            INTO @stmt
            END
            CLOSE @SqlStatementCursor
            DEALLOCATE @SqlStatementCursor

            ", tableName, fieldKey);

            List<DataTable> list = GetDatabaseRecords(queryString, recordKey);

            List<ColumnMetaData> meta = new List<ColumnMetaData>();

            DataTable dt1 = list[1];
            //dt1.PrimaryKey = new DataColumn[] { dt1.Columns["FieldName"] };

            List<string> columnNames = new List<string>();

            //How do I get column names to print in this C# program?
            //http://stackoverflow.com/a/2557943/139698
            foreach (DataColumn item in list[0].Columns)
            {
                columnNames.Add(item.ColumnName);
            }

            foreach (DataRow dr in dt1.Rows)
            {
                ColumnMetaData c = new ColumnMetaData();
                c.FieldName = dr["FieldName"].ToString();
                int colPos = 0;
                int.TryParse(dr["ColumnPosition"].ToString(), out colPos);
                c.ColumnPosition = colPos;
                int rowPos = 0;
                int.TryParse(dr["RowPosition"].ToString(), out rowPos);
                c.RowPosition = rowPos;
                c.ControlType = dr["ControlType"].ToString();
                meta.Add(c);
            }

            DataPayload dataPayload = new DataPayload();
            dataPayload.DataSources = list;
            dataPayload.MetaList = meta;
            dataPayload.ColumnNames = columnNames;

            return dataPayload;
        }