Analytics

2017年2月14日 星期二

[ListView]使用 ListView維護表單 (Use the ListView to maintain the form)


問題
使用 ListView維護表單



解決方法
  1. <%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
  2. Namespace="System.Web.UI.WebControls" TagPrefix="asp" %>
.aspx
  1. <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
  2. <asp:UpdatePanel ID="UP_Modify" runat="server" UpdateMode="Conditional">
  3. <ContentTemplate>
  4. <asp:ListView ID="lv_Modify" runat="server" InsertItemPosition="FirstItem" EnableModelValidation="True"
  5. OnItemCanceling="lv_Modify_ItemCanceling" OnItemDeleting="lv_Modify_ItemDeleting"
  6. OnItemInserting="lv_Modify_ItemInserting" OnItemUpdating="lv_Modify_ItemUpdating"
  7. OnItemEditing="lv_Modify_ItemEditing"
  8. OnItemDataBound="lv_Modify_ItemDataBound" onitemcreated="lv_Modify_ItemCreated">
  9. <LayoutTemplate>
  10. <table id="Table1" runat="server">
  11. <tr id="Tr1" runat="server">
  12. <td id="Td1" runat="server">
  13. <table id="itemPlaceholderContainer" runat="server" align="left" border="1" cellpadding="3"
  14. cellspacing="0" style="margin-left: 0px; border-collapse: collapse; border-color: #696969;
  15. font-size: small;">
  16. <tr id="Tr2" runat="server" style="color: #FFFFFF; background-color: #0000FF">
  17. <th id="Th2" runat="server">
  18. FUNCTION
  19. </th>
  20. <th id="Th19" runat="server">
  21. rule_seq
  22. </th>
  23. <th id="Th8" runat="server">
  24. system_key
  25. </th>
  26. <th id="Th20" runat="server">
  27. table_column
  28. </th>
  29. <th id="Th21" runat="server">
  30. column_value
  31. </th>
  32. </tr>
  33. <tr id="itemPlaceholder" runat="server">
  34. </tr>
  35. </table>
  36. </td>
  37. </tr>
  38. <tr id="Tr3" runat="server">
  39. <td id="Td2" runat="server" style="">
  40. </td>
  41. </tr>
  42. </table>
  43. </LayoutTemplate>
  44. <ItemTemplate>
  45. <tr style="background-color: #FFFFCC">
  46. <td>
  47. <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編輯" />
  48. <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="刪除" />
  49. </td>
  50. <td>
  51. <asp:Label ID="lblrule_seq" runat="server" Text='<%# Eval("rule_seq") %>' />
  52. </td>
  53. <td>
  54. <asp:Label ID="lblsystem_key" runat="server" Text='<%# Eval("system_key") %>' />
  55. </td>
  56. <td>
  57. <asp:DropDownList ID="ddltable_column" runat="server">
  58. </asp:DropDownList>
  59. <asp:HiddenField ID="hdtable_column" runat="server" Value='<%# Eval("table_column") %>' />
  60. </td>
  61. <td>
  62. <asp:Label ID="lblcolumn_value" runat="server" Text='<%# Eval("column_value") %>' />
  63. </td>
  64. </tr>
  65. </ItemTemplate>
  66. <EditItemTemplate>
  67. <tr style="background-color: #FFFF66">
  68. <td>
  69. <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" />
  70. <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="取消" />
  71. </td>
  72. <td>
  73. <asp:Label ID="lblrule_seq" runat="server" Text='<%# Eval("rule_seq") %>' />
  74. </td>
  75. <td>
  76. <asp:TextBox ID="txtsystem_key" runat="server" Text='<%# Bind("system_key") %>' />
  77. </td>
  78. <td>
  79. <asp:DropDownList ID="ddltable_column" runat="server">
  80. </asp:DropDownList>
  81. <asp:HiddenField ID="hdtable_column" runat="server" Value='<%# Eval("table_column") %>' />
  82. </td>
  83. <td>
  84. <asp:TextBox ID="txtcolumn_value" runat="server" Text='<%# Bind("column_value") %>' />
  85. </td>
  86. </tr>
  87. </EditItemTemplate>
  88. <EmptyDataTemplate>
  89. <table id="Table2" runat="server" style="">
  90. <tr>
  91. <td>
  92. 未傳回資料。
  93. </td>
  94. </tr>
  95. </table>
  96. </EmptyDataTemplate>
  97. <InsertItemTemplate>
  98. <tr style="background-color: #00FF00">
  99. <td>
  100. <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="插入" />
  101. <asp:Button ID="CancelButton0" runat="server" CommandName="Cancel" Text="清除" />
  102. </td>
  103. <td>
  104. 系統處理
  105. </td>
  106. <td>
  107. <asp:TextBox ID="txtsystem_key" runat="server" Text='<%# Bind("system_key") %>' />
  108. </td>
  109. <td>
  110. <asp:DropDownList ID="ddltable_column" runat="server">
  111. </asp:DropDownList>
  112. </td>
  113. <td>
  114. <asp:TextBox ID="txtcolumn_value" runat="server" Text='<%# Bind("column_value") %>' />
  115. </td>
  116. </tr>
  117. </InsertItemTemplate>
  118. </asp:ListView>
  119. </ContentTemplate>
  120. </asp:UpdatePanel>
.cs
  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. initRuleDropDownList();
  6. GetModifyData();
  7. }
  8. }
  9. protected void lv_Modify_ItemCanceling(object sender, ListViewCancelEventArgs e)
  10. {
  11. lv_Modify.EditIndex = -1;
  12. DataBindListView(lv_Modify, GetData());
  13. }
  14. protected void lv_Modify_ItemDeleting(object sender, ListViewDeleteEventArgs e)
  15. {
  16. if (lv_Modify.EditIndex >= 0) return;
  17. ListViewDataItem DItem = lv_Modify.Items[e.ItemIndex];
  18.  
  19. DBItem.obj1 obj = new DBItem.obj1();
  20. obj.rule_seq = Convert.ToInt32(((Label)DItem.FindControl("lblrule_seq")).Text.ToString().Trim());
  21. obj.system_key = ((Label)DItem.FindControl("lblsystem_key")).Text.ToString().Trim();
  22. obj.table_column = ((DropDownList)DItem.FindControl("ddltable_column")).SelectedValue.Trim();
  23. obj.column_value = ((Label)DItem.FindControl("lblcolumn_value")).Text.ToString().Trim();
  24. //process...
  25. //reget data
  26. }
  27. protected void lv_Modify_ItemEditing(object sender, ListViewEditEventArgs e)
  28. {
  29. lv_Modify.EditIndex = e.NewEditIndex;
  30. DataBindListView(lv_Modify, GetData());
  31. }
  32. protected void lv_Modify_ItemInserting(object sender, ListViewInsertEventArgs e)
  33. {
  34. if (lv_Modify.EditIndex >= 0) return;
  35.  
  36. string system_key = ((TextBox)e.Item.FindControl("txtsystem_key")).Text.ToString().Trim();
  37. string table_column = ((DropDownList)e.Item.FindControl("ddltable_column")).SelectedValue.Trim();
  38. string column_value = ((TextBox)e.Item.FindControl("txtcolumn_value")).Text.ToString().Trim();
  39. //process...
  40. //reget data
  41. }
  42. protected void lv_Modify_ItemUpdating(object sender, ListViewUpdateEventArgs e)
  43. {
  44. ListViewDataItem DItem = lv_Modify.Items[e.ItemIndex];
  45. string system_key = ((TextBox)DItem.FindControl("txtsystem_key")).Text.ToString().Trim();
  46. string table_column = ((DropDownList)DItem.FindControl("ddltable_column")).SelectedValue.Trim();
  47. string column_value = ((TextBox)DItem.FindControl("txtcolumn_value")).Text.ToString().Trim();
  48. int rule_seq = Convert.ToInt32(((Label)DItem.FindControl("lblrule_seq")).Text);
  49. //process...
  50. //reget data
  51. }
  52. private DataTable GetData()
  53. {
  54. return data....
  55. }
  56. protected void DataBindListView(ListView lv, Object list)
  57. {
  58. lv.DataSource = list;
  59. lv.DataBind();
  60. }
  61. protected void GetModifyData()
  62. {
  63. lv_Modify.EditIndex = -1;
  64. DataBindListView(lv_Modify, GetData());
  65. }
  66. private void initRuleDropDownList()
  67. {
  68. List<string> ruleList = dropdownlist source....
  69. ViewState["RuleDropDownList"] = ruleList;
  70. }
  71. protected void lv_Modify_ItemDataBound(object sender, ListViewItemEventArgs e)
  72. {
  73. if (e.Item.ItemType != ListViewItemType.EmptyItem)
  74. {
  75. DropDownList ddl = (DropDownList)e.Item.FindControl("ddltable_column");
  76. if (ViewState["RuleDropDownList"] == null)
  77. initRuleDropDownList();
  78. ddl.DataSource = ViewState["RuleDropDownList"];
  79. ddl.DataBind();
  80. }
  81. if (e.Item.ItemType == ListViewItemType.DataItem)
  82. {
  83. DropDownList ddl = (DropDownList)e.Item.FindControl("ddltable_column");
  84. HiddenField hd = (HiddenField)e.Item.FindControl("hdtable_column");
  85. ddl.SelectedValue = hd.Value;
  86. }
  87. }
  88. protected void lv_Modify_ItemCreated(object sender, ListViewItemEventArgs e)
  89. {
  90. if (e.Item.ItemType == ListViewItemType.InsertItem)
  91. {
  92. DropDownList ddl = (DropDownList)e.Item.FindControl("ddltable_column");
  93. if (ViewState["RuleDropDownList"] == null)
  94. initRuleDropDownList();
  95. ddl.DataSource = ViewState["RuleDropDownList"];
  96. ddl.DataBind();
  97. }
  98. }

沒有留言:

熱門文章