• 数据绑定控件ListView事件


    后台代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Drawing;
    using System.Web.UI.HtmlControls;
    using ListViewTest.DAL.UserSTableAdapters;
    
    namespace ListViewTest
    {
        public partial class List : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
            /// <summary>
            /// 数据插入之前调用,时间是在用户完成输入操作以后,由程序向数据库中插入的时候调用
            /// 可以用此事件的方法为数据字段设置初始值,比如判断用户是否输入,没有输入的话给一个值,或者不允许插入;再比如有关Guid的值,用户是没有办法输入的,所以由此方法进行赋值,而有人则说可以在ItemCreate中设置的嘛,不
            /// 过,对于Guid之类的数据,是没有必要显示给用户的,所以在没有 显示的时候在ItemCreate使用FindControl是找不到控件的,所以就只有在这个方法中设置喽
            /// 此方法也可以做后台验证,比如插入数据的时候某个字段不应该为空,则需要在此方法中再做一次验证,在前台可以使用数据验证控件进行验证,不过后台还是应该在验证一次
            /// 也可以对用户的输入数据进行一些调整
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void ListView1_ItemInserting(object sender, ListViewInsertEventArgs e)
            {
                e.Values["Id"] = Guid.NewGuid();
                //某不应该为空的字段没有赋值的时候则取消插入
    
                if (e.Values["Age"] == null)
                {
                    e.Cancel = true;
                }
                DropDownList SexDropDownList = (DropDownList)e.Item.FindControl("SexDropDownList");
    
    
                e.Values["Sex"] = SexDropDownList.SelectedValue;
    
    
            }
    
            /*数据更新的时候调用
             * 要判断一下e.item.type的类型,总共有三,种类型DataItem、InsertItem、EmptyItem 为      ListViewItemType的枚举元素类型
             * 在显示页面的元素的时候,如果是自定义的服务端控件,则需要在AlternatingItemTemplate与ItemTemplate均做修改,可以认为ItemTemplate是显示奇数行数据,AlternatingItemTemplate显示的事偶数行数据。而当没有AlternatingItemTemplate的时候,ItemTemplate操作的是全部数据
             */
            protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
            {
                if (e.Item.ItemType == ListViewItemType.DataItem)
                {
                    DropDownList SexDropDownList = (DropDownList)e.Item.FindControl("SexDropDownList");
                    DataRowView rowView = (DataRowView)e.Item.DataItem;
                    var usersRow = (ListViewTest.DAL.UserS.UserSRow)rowView.Row;
                    if (usersRow.Age > 20)
                    {
                        HtmlTableRow trRow = (HtmlTableRow)e.Item.FindControl("trRow");
                        trRow.Attributes["class"] = "error";
                    }
                    //当进行字符串赋值的时候最好能够进行Trim去空格处理,不然会发生错误
                    SexDropDownList.SelectedValue = usersRow.Sex.Trim();
    
    
    
                }
    
    
    
            }
            /// <summary>
            /// 每一行在页面上创建的时候都会调用,没错是每一行,所以要先判断e.item.itemtype的类型,然后再对不同类型的事件做不同的操作,不然会使做很多无用功,降低显示效率。比如在显示数据的时候,会造成覆盖更新
            /// 可以用此为控件设置默认值,记住是默认值
            /// 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e)
            {
                if (e.Item.ItemType == ListViewItemType.InsertItem)
                {
                    TextBox userNameTextBox = (TextBox)e.Item.FindControl("UserNameTextBox");
                    userNameTextBox.Text = "小耗子";
                    TextBox AgeTextBox = (TextBox)e.Item.FindControl("AgeTextBox");
                    AgeTextBox.Text = "20";
                    TextBox SexTextBox = (TextBox)e.Item.FindControl("SexTextBox");
                    SexTextBox.Text = "man";
    
                }
            }
    
            /// <summary>
            /// 在更新到数据库之前的操作
            /// 对用户输入的数据做处理
            /// 与inserting作用类似
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void ListView1_ItemUpdating(object sender, ListViewUpdateEventArgs e)
            {
    
            }
        

        protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
            {
                int index = e.Item.DisplayIndex;//获得行号
                Guid id = (Guid)ListView1.DataKeys[index].Value;//获得行的主键
                T_WareMessageTableAdapter adapter = new T_WareMessageTableAdapter();

                if (e.CommandName == "ArcName")
                {
                    adapter.ArcPrice(id);
                    ListView1.DataBind();
                   
                }

               
            }

        }
    }
    

     前台代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="List.aspx.cs" Inherits="ListViewTest.List" %>
    
    <!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>
    
        <style type="text/css">
        .error
        {
        	background-color:Blue;
        	}
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
            InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" 
            SelectMethod="GetData" 
            TypeName="ListViewTest.DAL.UserSTableAdapters.UserSTableAdapter">
            <InsertParameters>
                <asp:Parameter DbType="Guid" Name="Id" />
                <asp:Parameter Name="UserName" Type="String" />
                <asp:Parameter Name="Age" Type="Int32" />
                <asp:Parameter Name="Sex" Type="String" />
            </InsertParameters>
        </asp:ObjectDataSource>
        <div>
        
        </div>
        <asp:ListView ID="ListView1" runat="server" DataSourceID="ObjectDataSource1" 
            InsertItemPosition="LastItem" oniteminserting="ListView1_ItemInserting" 
            onitemdatabound="ListView1_ItemDataBound" 
            onitemcreated="ListView1_ItemCreated" onitemupdating="ListView1_ItemUpdating">
            <AlternatingItemTemplate>
                <tr  runat="server" id="trRow" >
                    <td>
                    </td>
                    <td>
                        <asp:Label ID="IdLabel" runat="server" Text='<%# Eval("Id") %>' />
                    </td>
                    <td>
                        <asp:Label ID="UserNameLabel" runat="server" Text='<%# Eval("UserName") %>' />
                    </td>
                    <td>
                        <asp:Label ID="AgeLabel" runat="server" Text='<%# Eval("Age") %>' />
                    </td>
                    <td>
                        <asp:Label ID="SexLabel" runat="server" Text='<%# Eval("Sex") %>' />
                        <asp:DropDownList ID="SexDropDownList" runat="server" >
                        <asp:ListItem Value="man">男</asp:ListItem>
                        <asp:ListItem Value="woman">女</asp:ListItem>
                        </asp:DropDownList>
                    </td>
                </tr>
            </AlternatingItemTemplate>
            <EditItemTemplate>
                <tr style="background-color: #999999;">
                    <td>
                        <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" />
                        <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="取消" />
                    </td>
                    <td>
                        <asp:TextBox ID="IdTextBox" runat="server" Text='<%# Bind("Id") %>' />
                    </td>
                    <td>
                        <asp:TextBox ID="UserNameTextBox" runat="server" 
                            Text='<%# Bind("UserName") %>' />
                    </td>
                    <td>
                        <asp:TextBox ID="AgeTextBox" runat="server" Text='<%# Bind("Age") %>' />
                    </td>
                    <td>
                        <asp:TextBox ID="SexTextBox" runat="server" Text='<%# Bind("Sex") %>' />
                    </td>
                </tr>
            </EditItemTemplate>
            <EmptyDataTemplate>
                <table runat="server" 
                    style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-1px;">
                    <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>
                        <asp:TextBox ID="IdTextBox" runat="server" Text='<%# Bind("Id") %>' />
                    </td>
                    <td>
                        <asp:TextBox ID="UserNameTextBox" runat="server"  
                            Text='<%# Bind("UserName") %>' ValidationGroup='插入' /><asp:RequiredFieldValidator ID="RequiredFieldValidator1"
                                runat="server" ErrorMessage="*" ControlToValidate="UserNameTextBox"></asp:RequiredFieldValidator>
                    </td>
                    <td>
                        <asp:TextBox ID="AgeTextBox" runat="server" Text='<%# Bind("Age") %>' />
                    </td>
                    <td>
                        <asp:TextBox ID="SexTextBox" runat="server" Text='<%# Bind("Sex") %>'  />
                        <asp:DropDownList ID="SexDropDownList" runat="server" >
                        <asp:ListItem Value="man">男</asp:ListItem>
                        <asp:ListItem Value="woman">女</asp:ListItem>
                        </asp:DropDownList>
                    </td>
                </tr>
            </InsertItemTemplate>
            <ItemTemplate>
                <tr  runat="server" id="trRow" >
                    <td>
                    </td>
                    <td>
                        <asp:Label ID="IdLabel" runat="server" Text='<%# Eval("Id") %>' />
                    </td>
                    <td>
                        <asp:Label ID="UserNameLabel" runat="server" Text='<%# Eval("UserName") %>' />
                    </td>
                    <td>
                        <asp:Label ID="AgeLabel" runat="server" Text='<%# Eval("Age") %>' />
                    </td>
                    <td>
                        <asp:Label ID="SexLabel" runat="server" Text='<%# Eval("Sex") %>' />
                        <asp:DropDownList ID="SexDropDownList" runat="server" >
                        <asp:ListItem Value="man">男</asp:ListItem>
                        <asp:ListItem Value="woman">女</asp:ListItem>
                        </asp:DropDownList>
                    </td>
                </tr>
            </ItemTemplate>
            <LayoutTemplate>
                <table runat="server">
                    <tr runat="server">
                        <td runat="server">
                            <table ID="itemPlaceholderContainer" runat="server" border="1" 
                                style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-1px;font-family: Verdana, Arial, Helvetica, sans-serif;">
                                <tr runat="server" style="background-color: #E0FFFF;color: #333333;">
                                    <th runat="server">
                                    </th>
                                    <th runat="server">
                                        Id</th>
                                    <th runat="server">
                                        UserName</th>
                                    <th runat="server">
                                        Age</th>
                                    <th runat="server">
                                        Sex</th>
                                </tr>
                                <tr ID="itemPlaceholder" runat="server">
                                </tr>
                            </table>
                        </td>
                    </tr>
                    <tr runat="server">
                        <td runat="server" 
                            style="text-align: center;background-color: #5D7B9D;font-family: Verdana, Arial, Helvetica, sans-serif;color: #FFFFFF">
                        </td>
                    </tr>
                </table>
            </LayoutTemplate>
            <SelectedItemTemplate>
                <tr style="background-color: #E2DED6;font-weight: bold;color: #333333;">
                    <td>
                    </td>
                    <td>
                        <asp:Label ID="IdLabel" runat="server" Text='<%# Eval("Id") %>' />
                    </td>
                    <td>
                        <asp:Label ID="UserNameLabel" runat="server" Text='<%# Eval("UserName") %>' />
                    </td>
                    <td>
                        <asp:Label ID="AgeLabel" runat="server" Text='<%# Eval("Age") %>' />
                    </td>
                    <td>
                        <asp:Label ID="SexLabel" runat="server" Text='<%# Eval("Sex") %>' />
                    </td>
                </tr>
            </SelectedItemTemplate>
        </asp:ListView>
        </form>
    </body>
    </html>
    

    闲话:

      今天发现把学习笔记直接注释到代码里面会看着更舒服,也更加方便。

      昨天大概是因为前天晚上睡觉睡得太晚的缘故,一整天大脑的运行速度都不够正常,导致学习的时候效率不是很高,临睡觉的时候脑袋昏昏。

      以后还是不能够睡得太晚。

  • 相关阅读:
    Cannot find class [org.springframework.http.converter.json.MappingJacksonHttpMessageConverter]
    HTTP的长连接和短连接
    Nginx(三)nginx 反向代理
    Nginx(四)nginx 负载均衡
    postgresql 数据库 INSERT 或 UPDATE 大量数据时速度慢的原因分析
    低层次父母,喜欢不停地“讲道理”,而高层次父母,会做2件事
    oracle数据库数据量如何计算,怎么查看oracle数据库数据量大小?
    Git的eclipse插件(下载、抓取、提交、恢复、比较)
    Linux 上 定时备份postgresql 数据库的方法
    Nginx(二)nginx.conf 配置文件
  • 原文地址:https://www.cnblogs.com/xuhongfei/p/2840561.html
Copyright © 2020-2023  润新知