using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using SqlAdmin; namespace SqlWebAdmin { public class edittable : System.Web.UI.Page { protected DataGrid ColumnsDataGrid; protected Label NoColumnsLabel; protected HyperLink AddNewColumnHyperLink; public edittable() { Page.Init += new System.EventHandler(Page_Init); } private void Page_Load(object sender, System.EventArgs e) { HttpCookie cookie = Request.Cookies["WebDataAdministrator"]; if (cookie == null) Response.Redirect("default.aspx?error=sessionexpired"); SqlServer server = new SqlServer(cookie.Values["server"], cookie.Values["username"], cookie.Values["password"]); server.Connect(); SqlDatabase database = server.Databases[Request["database"]]; if (database == null) { server.Disconnect(); // Database doesn't exist - break out and go to error page Response.Redirect(String.Format("error.aspx?error={0}", 1000)); return; } SqlTable table = database.Tables[Request["table"]]; // Set link for add new column AddNewColumnHyperLink.NavigateUrl = String.Format("editcolumn.aspx?database={0}&table={1}", Server.UrlEncode(Request["database"]), Server.UrlEncode(Request["table"])); if (table != null) { // The table exists and we do normal column editing ColumnsDataGrid.Visible = true; NoColumnsLabel.Visible = false; if (!IsPostBack) { // Update table properties // Get columns list SqlColumnCollection columns = table.Columns; DataSet ds = new DataSet(); ds.Tables.Add(); ds.Tables[0].Columns.Add("key", typeof(bool)); ds.Tables[0].Columns.Add("id", typeof(bool)); ds.Tables[0].Columns.Add("name", typeof(string)); ds.Tables[0].Columns.Add("datatype", typeof(string)); ds.Tables[0].Columns.Add("size", typeof(int)); ds.Tables[0].Columns.Add("precision", typeof(int)); ds.Tables[0].Columns.Add("scale", typeof(int)); ds.Tables[0].Columns.Add("nulls", typeof(bool)); ds.Tables[0].Columns.Add("default", typeof(string)); ds.Tables[0].Columns.Add("encodedname", typeof(string)); for (int i = 0; i < columns.Count; i++) { SqlColumnInformation columnInfo = columns[i].ColumnInformation; ds.Tables[0].Rows.Add(new object[] {columnInfo.Key, columnInfo.Identity, Server.HtmlEncode(columnInfo.Name), Server.HtmlEncode(columnInfo.DataType), columnInfo.Size, columnInfo.Precision, columnInfo.Scale, columnInfo.Nulls, Server.HtmlEncode(columnInfo.DefaultValue), Server.UrlEncode(columnInfo.Name)}); } ColumnsDataGrid.DataSource = ds; ColumnsDataGrid.DataBind(); } // If the table has data in it, disable edit column if (table.Rows > 0) { ColumnsDataGrid.Columns[2].Visible = true; ColumnsDataGrid.Columns[3].Visible = false; ColumnsDataGrid.Columns[8].Visible = false; } else { ColumnsDataGrid.Columns[2].Visible = false; ColumnsDataGrid.Columns[3].Visible = true; ColumnsDataGrid.Columns[8].Visible = true; } // If the table has only one column, do not allow delete if (table.Columns.Count == 1) ColumnsDataGrid.Columns[9].Visible = false; else ColumnsDataGrid.Columns[9].Visible = true; } else { // The table does not exist, implying that it is new ColumnsDataGrid.Visible = false; NoColumnsLabel.Visible = true; } server.Disconnect(); } private void Page_Init(object sender, EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); } #region Web Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } }