全速加载中

数据绑定控件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-width: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-width: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>

 

 

闲话:

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

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

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

posted @ 2012-12-31 14:08  许鸿飞  阅读(540)  评论(0编辑  收藏  举报