<asp:ListView ID="QiFang_Data_List" runat="server" DataSourceID="QiFang_Datasource" OnItemUpdating="QiFang_Data_List_ItemUpdating"> <LayoutTemplate> <table id="UserData" class="TableSub"> <tr> <th scope="col"> <asp:Label ID="LinkButton1" runat="server" Text="户型" /> </th> <th scope="col"> <asp:Label ID="LinkButton2" runat="server" Text="期房总数" /> </th> <th scope="col"> <asp:Label ID="LinkButton3" runat="server" Text="已选期房总数" /> </th> <th scope="col"> 修改 </th> </tr> <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder> </table> </LayoutTemplate> <ItemTemplate> <tr> <td align="center"> <%#Eval("ROOM_SHAPE")%> </td> <td align="center"> <%#Eval("QiFangCount")%> </td> <td align="center"> <%#Eval("YiXuanCount")%> </td> <td align="center"> <asp:LinkButton ID="btn_Edit" runat="server" Text="修改" CommandName="Edit"></asp:LinkButton> </td> </tr> </ItemTemplate> <EditItemTemplate> <tr> <td align="center"> <asp:Label ID="lbl_room_shape" runat="server" Text='<%# Bind("ROOM_SHAPE") %>'></asp:Label> </td> <td align="center"> <asp:TextBox ID="txt_Count" Text='<%#Eval("QiFangCount")%>' runat="server"></asp:TextBox> <asp:HiddenField ID="fg_Count" runat="server" Value='<%#Eval("QiFangCount")%>' /> <asp:HiddenField ID="hf_blockId" runat="server" Value='<%#Eval("BLOCK_ID")%>' /> </td> <td align="center"> <asp:Label ID="lbl_yixuanCount" runat="server" Text='<%# Bind("YiXuanCount") %>'></asp:Label> </td> <td align="center"> <asp:Button ID="btn_Update" runat="server" CommandName="Update" Text="确认" CssClass="btn" /> <asp:Button ID="btn_Cancel" runat="server" CommandName="Cancel" Text="取消" CausesValidation="false" CssClass="btn" /> </td> </tr> </EditItemTemplate> <EmptyItemTemplate> 没有数据 </EmptyItemTemplate> </asp:ListView>
<EditItemTemplate></EditItemTemplate>这个主要是当你点击“修改”触发了Edit命令,这样的话ListVIew就会显示的是<EditItemTemplate>里面的
你设定好的内容,进行编辑。。。。这里有个地方要注意的是当你想获取<EditItemTemplate>里面某个值时,那么你只能用控件的方式来显示出来,这样的话
ListView才能在后台取到该值,用的是
string qifangCount = ((TextBox)QiFang_Data_List.Items[e.ItemIndex].FindControl("txt_Count")).Text.Trim();
当你修改完成后点击“确认”时,CommandName="Update"触发,触发的是ListView的OnItemUpdating="QiFang_Data_List_ItemUpdating"方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/// <summary> /// 修改操作 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void QiFang_Data_List_ItemUpdating(object sender, ListViewUpdateEventArgs e) { string qifangCount = ((TextBox)QiFang_Data_List.Items[e.ItemIndex].FindControl("txt_Count")).Text.Trim(); string yixuanCount = ((Label)QiFang_Data_List.Items[e.ItemIndex].FindControl("lbl_yixuanCount")).Text.Trim(); string message = ""; string OldCount = ((HiddenField)QiFang_Data_List.Items[e.ItemIndex].FindControl("fg_Count")).Value.Trim();//原本的期房总数 string block_id = ((HiddenField)QiFang_Data_List.Items[e.ItemIndex].FindControl("hf_blockId")).Value.Trim();//楼层ID string room_shape = ((Label)QiFang_Data_List.Items[e.ItemIndex].FindControl("lbl_room_shape")).Text.Trim(); if (new QiFangManager().Modify_Room_Count(qifangCount,yixuanCount,OldCount,block_id,room_shape,out message) == false) { MessageBoxs.Show(message); return; } else { MessageBoxs.Show(message); } }
调用完这个方法后,这个CommandName="Update"还没有彻底结束,之后又做了什么呢????
因为这里ListView绑定数据源为ObjectDataSource,这样的话会之后还会触发
ObjectDataSource的UpdateMethod="Update_QiFang_Room"方法,这个方法可以设定参数:
<UpdateParameters>
<asp:Parameter Name="familyFeeID" Type="Int64" />
</UpdateParameters>这里我没有用到
另外记下自己的这次做的页面地址,老是做完之后在项目中找不到自己完成的页面,仅作记录:
D:\10.38\BQSolution\BQ.WebApp\FangYuan\QiFangList.aspx