這是舊的文章…
但這個功能之前其實算是失敗的…
在update時後想要再後台去抓取那些動態生成的欄位值…
但發現都抓不到…
最近都在用jQuery…
就改在前台抓完值後存在某個地方…
再由後台去處理…
舊的內容
為了不想要每次資料庫增加一個欄位…
就要大費工夫的去改一堆程式…
因此想說用動態的去產生要顯示的欄位…
這是ASP1.1的作法…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| void Page_Load() { TemplateColumn col = new TemplateColumn(); col.ItemTemplate = new DataItemTemplate(ListItemType.Item, colu, attr); col.EditItemTemplate = new DataItemTemplate(ListItemType.EditItem, colu, attr); datagrid.Columns.Add(col); } public class DataItemTemplate:ITemplate { private ListItemType mType; private string mColumnName; private string mIDName; public DataItemTemplate(ListItemType type, string colname, string idname) { mType = type; mColumnName = colname; mIDName = idname; } public void InstantiateIn(Control container) { switch (this.mType) { case ListItemType.Item: Label lb = new Label(); lb.DataBinding += new EventHandler(DataBinding); container.Controls.Add(lb); break; case ListItemType.EditItem: DropDownList ddl = new DropDownList(); ddl.Items.Add("TRUE"); ddl.Items.Add("FALSE"); ddl.ID = "ddl" + this.mIDName; container.Controls.Add(ddl); break; } } void DataBinding(object sender, EventArgs e) { Label lb = (Label)sender; DataGridItem container = (DataGridItem)lb.NamingContainer; object dataValue = DataBinder.Eval(container.DataItem, mColumnName);
if(dataValue != DBNull.Value) { lb.Text = dataValue.ToString(); } }
|
新的內容
ASP2.0的作法請產考這篇文章…
http://blog.blueshop.com.tw/hent/archive/2008/02/24/54382.aspx
前台抓取動態欄位值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| $('#dg_ControlStatus').find('a[id$=btnUpdate]').click(function(){ var tempReason = prompt('Modify Reason?',''); if(tempReason != null && tempReason != '') $('#txtReason').val(tempReason); else return false;
var data = ''; $(this).parents('tr').find('td').each(function(){ if($(this).find('select').length > 0) data += $(this).find('select').val() + ','; }); $('#txtSaveData').val(data); });
|