8.行命令按钮

  • ListView的行按钮和Repeater一样,不同的是取当前行数据的方式,int index=((ListViewDataItem)e.Item).DisplayIndex取出操作行的行号,ListView1.DataKeys[index].Value取出主键的值,如果对数据进行了操作,最后要对ListView执行DataBind刷新数据,由ListView的DataKeynames属性决定存储哪些字段值为主键,可以多个主键(和数据库主键没有直接关系),所有有Values.
  • 排序:将LayoutTemplate中的表头用<asp:LinkButton runat="server" CommandName="Sort" Text="Id" CommandArgument="Id" />代替,其中CommandArgument的值为排序字段。只要是CommandName、CommandArgument对就可以了,展现成什么,显示在哪都可以。

实例:

   有个数据表有三个字段:id(自增),name(用户名).age(年龄).用listview显示这些数据,并在listview中放一个按钮,每当点击一下这个按钮,这个记录的年龄就会增加一岁。因为我们可以在浏览状态下给其增加一岁,所有把这个行按钮放在itemTemplate中。也放入一按钮用于排序,如下源码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="行命令设置.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
            DeleteMethod="Delete" InsertMethod="Insert" 
            OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" 
            TypeName="行命令设置.DAL.DataSetUserTableAdapters.T_UserTableAdapter" 
            UpdateMethod="Update">
            <DeleteParameters>
                <asp:Parameter Name="Original_id" Type="Int32" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="name" Type="String" />
                <asp:Parameter Name="age" Type="Int32" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="name" Type="String" />
                <asp:Parameter Name="age" Type="Int32" />
                <asp:Parameter Name="Original_id" Type="Int32" />
            </UpdateParameters>
        </asp:ObjectDataSource>
        <asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1">
            <Fields>
                <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" 
                    ShowNextPageButton="False" ShowPreviousPageButton="False" />
                <asp:NumericPagerField />
                <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" 
                    ShowNextPageButton="False" ShowPreviousPageButton="False" />
            </Fields>
        </asp:DataPager>
        <asp:ListView ID="ListView1" runat="server" DataKeyNames="id" 
            DataSourceID="ObjectDataSource1" InsertItemPosition="None" 
            onitemcommand="ListView1_ItemCommand">
           
           
           
            <EditItemTemplate>
                <tr style="">
                    <td>
                        <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" />
                        <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="取消" />
                    </td>
                    <td>
                       
                        <asp:Label ID="idLabel1" runat="server" Text='<%# Eval("id") %>' />
                    </td>
                    <td>
                        <asp:TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>' />
                    </td>
                    <td>
                        <asp:TextBox ID="ageTextBox" runat="server" Text='<%# Bind("age") %>' />
                    </td>
                </tr>
            </EditItemTemplate>
            <EmptyDataTemplate>
                <table runat="server" style="">
                    <tr>
                        <td>
                            未返回数据。</td>
                    </tr>
                </table>
            </EmptyDataTemplate>
            <InsertItemTemplate>
                <tr style="">
                    <td>
                        <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="插入" />
                        <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="清除" />
                    </td>
                    <td>
                        
                        &nbsp;</td>
                    <td>
                        <asp:TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>' />
                    </td>
                    <td>
                        <asp:TextBox ID="ageTextBox" runat="server" Text='<%# Bind("age") %>' />
                    </td>
                </tr>
            </InsertItemTemplate>
            <ItemTemplate>
                <tr style="">
                    <td>
                         <asp:Button ID="btn" runat="server" Text="排序" CommandName="Sort" CommandArgument="Age" />
                        <asp:Button ID="IncBtn" runat="server" Text="增一岁" CommandName="IncAge" />
                        <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" />
                        <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="编辑" />
                    </td>
                    <td>
                        <asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' />
                    </td>
                    <td>
                        <asp:Label ID="nameLabel" runat="server" Text='<%# Eval("name") %>' />
                    </td>
                    <td>
                        <asp:Label ID="ageLabel" runat="server" Text='<%# Eval("age") %>' />
                    </td>
                </tr>
            </ItemTemplate>
            <LayoutTemplate>
                <table runat="server">
                    <tr runat="server">
                        <td runat="server">
                            <table ID="itemPlaceholderContainer" runat="server" border="0" style="">
                                <tr runat="server" style="">
                                    <th runat="server">
                                    </th>
                                    <th runat="server">
                                        id</th>
                                    <th runat="server">
                                        name</th>
                                    <th runat="server">
                                       
                                        age</th>
                                </tr>
                                <tr runat="server" ID="itemPlaceholder">
                                </tr>
                            </table>
                        </td>
                    </tr>
                    <tr runat="server">
                        <td runat="server" style="">
                        </td>
                    </tr>
                </table>
            </LayoutTemplate>
            
         
            
        </asp:ListView>
    
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
    
    </div>
    </form>
</body>
</html>

在listview 的itemCommand中写入以下事件:

  protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            if (e.CommandName == "IncAge")
            {
                int i = ((ListViewDataItem)e.Item).DisplayIndex;
               // int id =(int)ListView1.DataKeys[i].Value;
                int id = (int)ListView1.DataKeys[i].Values["id"];
                T_UserTableAdapter adapter = new T_UserTableAdapter();
                adapter.IncAgeById(id);
                ListView1.DataBind();
              

            }
        }
原文地址:https://www.cnblogs.com/yagzh2000/p/3169440.html