private DataView XmlDataView()
        {
            UserDefinedTableDB objUserDefinedTable = new UserDefinedTableDB();
            DataSet            ds;

            ds = objUserDefinedTable.GetUserDefinedRows(ModuleIDsrc());

            // create a dataview to process the sort and filter options
            return(new DataView(ds.Tables[0]));
        }
        protected void BindGrid()
        {
            UserDefinedTableDB objUserDefinedTable = new UserDefinedTableDB();

            string strSortField = string.Empty;
            string strSortOrder = string.Empty;

            SqlDataReader dr;

            if (ViewState["SortField"].ToString() != string.Empty && ViewState["SortOrder"].ToString() != string.Empty)
            {
                strSortField = ViewState["SortField"].ToString();
                strSortOrder = ViewState["SortOrder"].ToString();
            }
            else
            {
                if (Settings["SortField"].ToString() != string.Empty)
                {
                    strSortField = Settings["SortField"].ToString();
                }

                if (Settings["SortOrder"].ToString() != string.Empty)
                {
                    strSortOrder = Settings["SortOrder"].ToString();
                }
                else
                {
                    strSortOrder = "ASC";
                }
            }

            grdData.Columns.Clear();

            dr = objUserDefinedTable.GetUserDefinedFields(ModuleID);
            try
            {
                while (dr.Read())
                {
                    DataGridColumn colField = null;
                    if (dr["FieldType"].ToString() == "Image")
                    {
                        colField = new BoundColumn();
                        ((BoundColumn)colField).DataField        = dr["FieldTitle"].ToString();
                        ((BoundColumn)colField).DataFormatString = "<img src=\"" + ((SettingItem)Settings["ImagePath"]).FullPath + "/{0}" + "\" alt=\"{0}\" border =0>";
                    }
                    else if (dr["FieldType"].ToString() == "File")
                    {
                        colField = new HyperLinkColumn();
                        ((HyperLinkColumn)colField).DataTextField               = dr["FieldTitle"].ToString();
                        ((HyperLinkColumn)colField).DataTextFormatString        = "{0}";
                        ((HyperLinkColumn)colField).DataNavigateUrlFormatString = ((SettingItem)Settings["DocumentPath"]).FullPath + "/{0}";
                        ((HyperLinkColumn)colField).DataNavigateUrlField        = dr["FieldTitle"].ToString();
                    }
                    else
                    {
                        colField = new BoundColumn();
                        ((BoundColumn)colField).DataField = dr["FieldTitle"].ToString();
                        switch (dr["FieldType"].ToString())
                        {
                        case "DateTime":
                            //Changed to Italian format as it is sayed to be the default (see intro of history.txt)
                            //Better would be to make this follow the current culture - Rob Siera, 15 jan 2005
                            ((BoundColumn)colField).DataFormatString = "{0:dd MMM yyyy}";
                            break;

                        case "Int32":
                            ((BoundColumn)colField).DataFormatString = "{0:#,###,##0}";
                            colField.HeaderStyle.HorizontalAlign     = HorizontalAlign.Right;
                            colField.ItemStyle.HorizontalAlign       = HorizontalAlign.Right;
                            break;

                        case "Decimal":
                            ((BoundColumn)colField).DataFormatString = "{0:#,###,##0.00}";
                            colField.HeaderStyle.HorizontalAlign     = HorizontalAlign.Right;
                            colField.ItemStyle.HorizontalAlign       = HorizontalAlign.Right;
                            break;
                        }
                    }

                    colField.HeaderText = dr["FieldTitle"].ToString();
                    if (dr["FieldTitle"].ToString() == strSortField)
                    {
                        //  2004/07/04 by Ozan Sirin, FIX: It does not show sort images when running root site instead of rainbow virtual folder.
                        if (strSortOrder == "ASC")
                        {
                            colField.HeaderText += "<img src='" + Rainbow.Settings.Path.WebPathCombine(Rainbow.Settings.Path.ApplicationRoot, "DesktopModules/UserDefinedTable/sortascending.gif") + "' border='0' alt='" + Esperantus.Localize.GetString("USERTABLE_SORTEDBY", "Sorted By", null) + " " + strSortField + " " + Esperantus.Localize.GetString("USERTABLE_INASCORDER", "In Ascending Order", null) + "'>";
                        }
                        else
                        {
                            colField.HeaderText += "<img src='" + Rainbow.Settings.Path.WebPathCombine(Rainbow.Settings.Path.ApplicationRoot, "DesktopModules/UserDefinedTable/sortdescending.gif") + "' border='0' alt='" + Esperantus.Localize.GetString("USERTABLE_SORTEDBY", "Sorted By", null) + " " + strSortField + " " + Esperantus.Localize.GetString("USERTABLE_INDSCORDER", "In Descending Order", null) + "'>";
                        }
                    }
                    colField.Visible        = bool.Parse(dr["Visible"].ToString());
                    colField.SortExpression = dr["FieldTitle"].ToString() + "|ASC";

                    grdData.Columns.Add(colField);
                }
            }
            finally
            {
                dr.Close();
            }

            if (IsEditable)
            {
                HyperLinkColumn hc = new HyperLinkColumn();
                hc.Text = "Edit";
                hc.DataNavigateUrlField        = "UserDefinedRowID";
                hc.DataNavigateUrlFormatString = HttpUrlBuilder.BuildUrl("~/DesktopModules/UserDefinedTable/UserDefinedTableEdit.aspx", TabID, "&mID=" + ModuleID + "&UserDefinedRowID={0}");
                grdData.Columns.Add(hc);
            }

            DataSet ds;

            ds = objUserDefinedTable.GetUserDefinedRows(ModuleID);

            // create a dataview to process the sort and filter options
            DataView dv;

            dv = new DataView(ds.Tables[0]);

            // sort data view
            if (strSortField != string.Empty && strSortOrder != string.Empty)
            {
                dv.Sort = strSortField + " " + strSortOrder;
            }

            grdData.DataSource = dv;
            grdData.DataBind();
        }