Asp.net源码专业站
首页->博客空间->BlogEngine v1.3 多皮肤多语言版源码>>admin/Extension Manager/Settings.ascx.cs>>源码在线查看
温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:BlogEngine v1.3 多皮肤多语言版源码
当前文件:文件类型 BlogEngine/admin/Extension Manager/Settings.ascx.cs[10K,2009-6-12 11:33:54]打开代码结构图
普通视图
		            
1using System; 2using System.Data; 3using System.Configuration; 4using System.Collections; 5using System.Collections.Generic; 6using System.Collections.Specialized; 7using System.Web; 8using System.Web.Security; 9using System.Web.UI; 10using System.Web.UI.WebControls; 11using System.Web.UI.WebControls.WebParts; 12using System.Web.UI.HtmlControls; 13using System.Xml; 14using System.Reflection; 15using BlogEngine.Core; 16 17public partial class User_controls_xmanager_Parameters : System.Web.UI.UserControl 18{ 19 Private members 23 24 /// <summary> 25 /// Dynamically loads form controls or 26 /// data grid and binds data to controls 27 /// </summary> 28 /// <param name="sender"></param> 29 /// <param name="e"></param> 30 protected void Page_Load(object sender, EventArgs e) 31 { 32 _extensionName = Request.QueryString["ext"]; 33 _settings = ExtensionManager.GetSettings(_extensionName); 34 35 CreateFormFields(); 36 37 if (!Page.IsPostBack) 38 { 39 if (_settings.IsScalar) 40 { 41 BindScalar(); 42 } 43 else 44 { 45 CreateTemplatedGridView(); 46 BindGrid(); 47 } 48 } 49 50 if (_settings.IsScalar) 51 { 52 btnAdd.Text = Resources.labels.save; 53 } 54 else 55 { 56 grid.RowEditing += new GridViewEditEventHandler(grid_RowEditing); 57 grid.RowUpdating += new GridViewUpdateEventHandler(grid_RowUpdating); 58 grid.RowCancelingEdit += delegate { Response.Redirect(Request.RawUrl); }; 59 grid.RowDeleting += new GridViewDeleteEventHandler(grid_RowDeleting); 60 btnAdd.Text = Resources.labels.add; 61 } 62 63 btnAdd.Click += new EventHandler(btnAdd_Click); 64 } 65 66 /// <summary> 67 /// Handels adding a new value(s) 68 /// </summary> 69 /// <param name="sender">Button</param> 70 /// <param name="e">Arguments</param> 71 void btnAdd_Click(object sender, EventArgs e) 72 { 73 if (IsValidForm()) 74 { 75 foreach (Control ctl in phAddForm.Controls) 76 { 77 if (ctl.GetType().Name == "TextBox") 78 { 79 TextBox txt = (TextBox)ctl; 80 81 if (_settings.IsScalar) 82 _settings.UpdateScalarValue(txt.ID, txt.Text); 83 else 84 _settings.AddValue(txt.ID, txt.Text); 85 } 86 } 87 ExtensionManager.SaveSettings(_extensionName, _settings); 88 if (_settings.IsScalar) 89 { 90 InfoMsg.InnerHtml = "The values has been saved"; 91 InfoMsg.Visible = true; 92 } 93 else 94 { 95 BindGrid(); 96 } 97 } 98 } 99 100 /// <summary> 101 /// Deliting row in the data grid 102 /// </summary> 103 /// <param name="sender">Grid View</param> 104 /// <param name="e">Arguments</param> 105 void grid_RowDeleting(object sender, GridViewDeleteEventArgs e) 106 { 107 foreach (ExtensionParameter par in _settings.Parameters) 108 { 109 par.DeleteValue(e.RowIndex); 110 } 111 ExtensionManager.SaveSettings(_extensionName, _settings); 112 Response.Redirect(Request.RawUrl); 113 } 114 115 /// <summary> 116 /// Updating row in the grid 117 /// </summary> 118 /// <param name="sender">Grid View</param> 119 /// <param name="e">Event args</param> 120 void grid_RowUpdating(object sender, GridViewUpdateEventArgs e) 121 { 122 // extract and store input values in the collection 123 StringCollection updateValues = new StringCollection(); 124 foreach (DataControlFieldCell cel in grid.Rows[e.RowIndex].Controls) 125 { 126 foreach (Control ctl in cel.Controls) 127 { 128 if (ctl.GetType().Name == "TextBox") 129 { 130 TextBox txt = (TextBox)ctl; 131 updateValues.Add(txt.Text); 132 } 133 } 134 } 135 136 for (int i = 0; i < _settings.Parameters.Count; i++) 137 { 138 string parName = _settings.Parameters[i].Name; 139 if (_settings.IsRequiredParameter(parName) && string.IsNullOrEmpty(updateValues[i])) 140 { 141 // throw error if required field is empty 142 ErrorMsg.InnerHtml = "\"" + _settings.GetLabel(parName) + "\" is a required field"; 143 ErrorMsg.Visible = true; 144 e.Cancel = true; 145 return; 146 } 147 else if (parName == _settings.KeyField && _settings.IsKeyValueExists(updateValues[i])) 148 { 149 // check if key value was changed; if not, it's ok to update 150 if (!_settings.IsOldValue(parName, updateValues[i], e.RowIndex)) 151 { 152 // trying to update key field with value that already exists 153 ErrorMsg.InnerHtml = "\"" + updateValues[i] + "\" is already exists"; 154 ErrorMsg.Visible = true; 155 e.Cancel = true; 156 return; 157 } 158 159 } 160 else 161 _settings.Parameters[i].Values[e.RowIndex] = updateValues[i]; 162 } 163 164 ExtensionManager.SaveSettings(_extensionName, _settings); 165 Response.Redirect(Request.RawUrl); 166 } 167 168 /// <summary> 169 /// Editing data in the data grid 170 /// </summary> 171 /// <param name="sender">Grid View</param> 172 /// <param name="e">Event args</param> 173 void grid_RowEditing(object sender, GridViewEditEventArgs e) 174 { 175 grid.EditIndex = e.NewEditIndex; 176 BindGrid(); 177 } 178 179 /// <summary> 180 /// Binds settings values formatted as 181 /// data table to grid view 182 /// </summary> 183 private void BindGrid() 184 { 185 grid.DataKeyNames = new string[] { _settings.KeyField }; 186 grid.DataSource = _settings.GetDataTable(); 187 grid.DataBind(); 188 } 189 190 /// <summary> 191 /// Binds single value parameters 192 /// to text boxes 193 /// </summary> 194 private void BindScalar() 195 { 196 foreach (ExtensionParameter par in _settings.Parameters) 197 { 198 foreach (Control ctl in phAddForm.Controls) 199 { 200 if (ctl.GetType().Name == "TextBox") 201 { 202 TextBox txt = (TextBox)ctl; 203 if (txt.ID.ToLower() == par.Name.ToLower()) 204 { 205 if (par.Values != null) 206 txt.Text = par.Values[0]; 207 } 208 } 209 } 210 } 211 } 212 213 /// <summary> 214 /// Creates template for data grid view 215 /// </summary> 216 void CreateTemplatedGridView() 217 { 218 foreach (ExtensionParameter par in _settings.Parameters) 219 { 220 BoundField col = new BoundField(); 221 col.DataField = par.Name; 222 col.HeaderText = par.Name; 223 grid.Columns.Add(col); 224 } 225 } 226 227 /// <summary> 228 /// Dynamically add controls to the form 229 /// </summary> 230 void CreateFormFields() 231 { 232 foreach (ExtensionParameter par in _settings.Parameters) 233 { 234 ErrorMsg.InnerHtml = string.Empty; 235 ErrorMsg.Visible = false; 236 InfoMsg.InnerHtml = string.Empty; 237 InfoMsg.Visible = false; 238 239 // add label 240 Label lbl = new Label(); 241 lbl.Width = new Unit("100"); 242 lbl.Text = par.Label; 243 phAddForm.Controls.Add(lbl); 244 245 Literal br = new Literal(); 246 br.Text = "<br />"; 247 phAddForm.Controls.Add(br); 248 249 // add textbox 250 TextBox bx = new TextBox(); 251 bx.Text = string.Empty; 252 bx.ID = par.Name; 253 bx.Width = new Unit(250); 254 bx.MaxLength = par.MaxLength; 255 phAddForm.Controls.Add(bx); 256 257 Literal br2 = new Literal(); 258 br2.Text = "<br />"; 259 phAddForm.Controls.Add(br2); 260 } 261 } 262 263 /// <summary> 264 /// Validate the form 265 /// </summary> 266 /// <returns>True if valid</returns> 267 private bool IsValidForm() 268 { 269 bool rval = true; 270 ErrorMsg.InnerHtml = string.Empty; 271 foreach (Control ctl in phAddForm.Controls) 272 { 273 if (ctl.GetType().Name == "TextBox") 274 { 275 TextBox txt = (TextBox)ctl; 276 if (_settings.IsRequiredParameter(txt.ID) && string.IsNullOrEmpty(txt.Text.Trim())) 277 { 278 ErrorMsg.InnerHtml = "\"" + _settings.GetLabel(txt.ID) + "\" is a required field"; 279 ErrorMsg.Visible = true; 280 rval = false; 281 break; 282 } 283 if (!_settings.IsScalar) 284 { 285 if (_settings.KeyField == (txt.ID) && _settings.IsKeyValueExists(txt.Text.Trim())) 286 { 287 ErrorMsg.InnerHtml = "\"" + txt.Text + "\" is already exists"; 288 ErrorMsg.Visible = true; 289 rval = false; 290 break; 291 } 292 } 293 } 294 } 295 return rval; 296 } 297 298 /// <summary> 299 /// Gets a handle on grid data just before 300 /// bound them to grid view 301 /// </summary> 302 /// <param name="sender">Grid view</param> 303 /// <param name="e">Event args</param> 304 protected void grid_RowDataBound(object sender, GridViewRowEventArgs e) 305 { 306 AddConfirmDelete((GridView)sender, e); 307 } 308 309 /// <summary> 310 /// Adds confirmation box to delete buttons 311 /// in the data grid 312 /// </summary> 313 /// <param name="gv">Data grid view</param> 314 /// <param name="e">Event args</param> 315 protected static void AddConfirmDelete(GridView gv, GridViewRowEventArgs e) 316 { 317 if (e.Row.RowType != DataControlRowType.DataRow) 318 return; 319 320 foreach (DataControlFieldCell dcf in e.Row.Cells) 321 { 322 if (string.IsNullOrEmpty(dcf.Text.Trim())) 323 { 324 foreach (Control ctrl in dcf.Controls) 325 { 326 LinkButton deleteButton = ctrl as LinkButton; 327 if (deleteButton != null && deleteButton.Text == "Delete") 328 { 329 deleteButton.Attributes.Add("onClick", "return confirm('Are you sure you want to delete this row?');"); 330 break; 331 } 332 } 333 break; 334 } 335 } 336 } 337} 338
还没有找到您心仪的内容?请用.net源码大搜捕
代码片断 打包下载该项目完整源码:BlogEngine v1.3 多皮肤多语言版源码
51Aspx.com 版权所有 CopyRight © 2006-2010. 京ICP备06046876号 本站法律顾问:ITlaw-庄毅雄律师
返回顶部
客户服务:点击这里进行客户咨询 业务合作:点击这里洽谈业务合作 合作热线:010-68880146