温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:BlogEngine v1.3 多皮肤多语言版源码
当前文件:
BlogEngine/admin/Extension Manager/Settings.ascx.cs[10K,2009-6-12 11:33:54],打开代码结构图
BlogEngine/admin/Extension Manager/Settings.ascx.cs[10K,2009-6-12 11:33:54],打开代码结构图1using System; 2
using System.Data; 3
using System.Configuration; 4
using System.Collections; 5
using System.Collections.Generic; 6
using System.Collections.Specialized; 7
using System.Web; 8
using System.Web.Security; 9
using System.Web.UI; 10
using System.Web.UI.WebControls; 11
using System.Web.UI.WebControls.WebParts; 12
using System.Web.UI.HtmlControls; 13
using System.Xml; 14
using System.Reflection; 15
using BlogEngine.Core; 16
17
public 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






}