問題
使用 ListView維護表單
解決方法
<%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI.WebControls" TagPrefix="asp" %>.aspx
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <asp:UpdatePanel ID="UP_Modify" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:ListView ID="lv_Modify" runat="server" InsertItemPosition="FirstItem" EnableModelValidation="True" OnItemCanceling="lv_Modify_ItemCanceling" OnItemDeleting="lv_Modify_ItemDeleting" OnItemInserting="lv_Modify_ItemInserting" OnItemUpdating="lv_Modify_ItemUpdating" OnItemEditing="lv_Modify_ItemEditing" OnItemDataBound="lv_Modify_ItemDataBound" onitemcreated="lv_Modify_ItemCreated"> <LayoutTemplate> <table id="Table1" runat="server"> <tr id="Tr1" runat="server"> <td id="Td1" runat="server"> <table id="itemPlaceholderContainer" runat="server" align="left" border="1" cellpadding="3" cellspacing="0" style="margin-left: 0px; border-collapse: collapse; border-color: #696969; font-size: small;"> <tr id="Tr2" runat="server" style="color: #FFFFFF; background-color: #0000FF"> <th id="Th2" runat="server"> FUNCTION </th> <th id="Th19" runat="server"> rule_seq </th> <th id="Th8" runat="server"> system_key </th> <th id="Th20" runat="server"> table_column </th> <th id="Th21" runat="server"> column_value </th> </tr> <tr id="itemPlaceholder" runat="server"> </tr> </table> </td> </tr> <tr id="Tr3" runat="server"> <td id="Td2" runat="server" style=""> </td> </tr> </table> </LayoutTemplate> <ItemTemplate> <tr style="background-color: #FFFFCC"> <td> <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編輯" /> <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="刪除" /> </td> <td> <asp:Label ID="lblrule_seq" runat="server" Text='<%# Eval("rule_seq") %>' /> </td> <td> <asp:Label ID="lblsystem_key" runat="server" Text='<%# Eval("system_key") %>' /> </td> <td> <asp:DropDownList ID="ddltable_column" runat="server"> </asp:DropDownList> <asp:HiddenField ID="hdtable_column" runat="server" Value='<%# Eval("table_column") %>' /> </td> <td> <asp:Label ID="lblcolumn_value" runat="server" Text='<%# Eval("column_value") %>' /> </td> </tr> </ItemTemplate> <EditItemTemplate> <tr style="background-color: #FFFF66"> <td> <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" /> <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="取消" /> </td> <td> <asp:Label ID="lblrule_seq" runat="server" Text='<%# Eval("rule_seq") %>' /> </td> <td> <asp:TextBox ID="txtsystem_key" runat="server" Text='<%# Bind("system_key") %>' /> </td> <td> <asp:DropDownList ID="ddltable_column" runat="server"> </asp:DropDownList> <asp:HiddenField ID="hdtable_column" runat="server" Value='<%# Eval("table_column") %>' /> </td> <td> <asp:TextBox ID="txtcolumn_value" runat="server" Text='<%# Bind("column_value") %>' /> </td> </tr> </EditItemTemplate> <EmptyDataTemplate> <table id="Table2" runat="server" style=""> <tr> <td> 未傳回資料。 </td> </tr> </table> </EmptyDataTemplate> <InsertItemTemplate> <tr style="background-color: #00FF00"> <td> <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="插入" /> <asp:Button ID="CancelButton0" runat="server" CommandName="Cancel" Text="清除" /> </td> <td> 系統處理 </td> <td> <asp:TextBox ID="txtsystem_key" runat="server" Text='<%# Bind("system_key") %>' /> </td> <td> <asp:DropDownList ID="ddltable_column" runat="server"> </asp:DropDownList> </td> <td> <asp:TextBox ID="txtcolumn_value" runat="server" Text='<%# Bind("column_value") %>' /> </td> </tr> </InsertItemTemplate> </asp:ListView> </ContentTemplate> </asp:UpdatePanel>.cs
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { initRuleDropDownList(); GetModifyData(); } } protected void lv_Modify_ItemCanceling(object sender, ListViewCancelEventArgs e) { lv_Modify.EditIndex = -1; DataBindListView(lv_Modify, GetData()); } protected void lv_Modify_ItemDeleting(object sender, ListViewDeleteEventArgs e) { if (lv_Modify.EditIndex >= 0) return; ListViewDataItem DItem = lv_Modify.Items[e.ItemIndex]; DBItem.obj1 obj = new DBItem.obj1(); obj.rule_seq = Convert.ToInt32(((Label)DItem.FindControl("lblrule_seq")).Text.ToString().Trim()); obj.system_key = ((Label)DItem.FindControl("lblsystem_key")).Text.ToString().Trim(); obj.table_column = ((DropDownList)DItem.FindControl("ddltable_column")).SelectedValue.Trim(); obj.column_value = ((Label)DItem.FindControl("lblcolumn_value")).Text.ToString().Trim(); //process... //reget data } protected void lv_Modify_ItemEditing(object sender, ListViewEditEventArgs e) { lv_Modify.EditIndex = e.NewEditIndex; DataBindListView(lv_Modify, GetData()); } protected void lv_Modify_ItemInserting(object sender, ListViewInsertEventArgs e) { if (lv_Modify.EditIndex >= 0) return; string system_key = ((TextBox)e.Item.FindControl("txtsystem_key")).Text.ToString().Trim(); string table_column = ((DropDownList)e.Item.FindControl("ddltable_column")).SelectedValue.Trim(); string column_value = ((TextBox)e.Item.FindControl("txtcolumn_value")).Text.ToString().Trim(); //process... //reget data } protected void lv_Modify_ItemUpdating(object sender, ListViewUpdateEventArgs e) { ListViewDataItem DItem = lv_Modify.Items[e.ItemIndex]; string system_key = ((TextBox)DItem.FindControl("txtsystem_key")).Text.ToString().Trim(); string table_column = ((DropDownList)DItem.FindControl("ddltable_column")).SelectedValue.Trim(); string column_value = ((TextBox)DItem.FindControl("txtcolumn_value")).Text.ToString().Trim(); int rule_seq = Convert.ToInt32(((Label)DItem.FindControl("lblrule_seq")).Text); //process... //reget data } private DataTable GetData() { return data.... } protected void DataBindListView(ListView lv, Object list) { lv.DataSource = list; lv.DataBind(); } protected void GetModifyData() { lv_Modify.EditIndex = -1; DataBindListView(lv_Modify, GetData()); } private void initRuleDropDownList() { List<string> ruleList = dropdownlist source.... ViewState["RuleDropDownList"] = ruleList; } protected void lv_Modify_ItemDataBound(object sender, ListViewItemEventArgs e) { if (e.Item.ItemType != ListViewItemType.EmptyItem) { DropDownList ddl = (DropDownList)e.Item.FindControl("ddltable_column"); if (ViewState["RuleDropDownList"] == null) initRuleDropDownList(); ddl.DataSource = ViewState["RuleDropDownList"]; ddl.DataBind(); } if (e.Item.ItemType == ListViewItemType.DataItem) { DropDownList ddl = (DropDownList)e.Item.FindControl("ddltable_column"); HiddenField hd = (HiddenField)e.Item.FindControl("hdtable_column"); ddl.SelectedValue = hd.Value; } } protected void lv_Modify_ItemCreated(object sender, ListViewItemEventArgs e) { if (e.Item.ItemType == ListViewItemType.InsertItem) { DropDownList ddl = (DropDownList)e.Item.FindControl("ddltable_column"); if (ViewState["RuleDropDownList"] == null) initRuleDropDownList(); ddl.DataSource = ViewState["RuleDropDownList"]; ddl.DataBind(); } }
沒有留言:
張貼留言