ListView的使用

 <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" />
                    &nbsp;
                    <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"方法

View Code
/// <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

原文地址:https://www.cnblogs.com/wenghaowen/p/2883420.html