好处:复杂的表不易查看、编辑、新增,将数据传到单独的页面进行查看、编辑、新增,信息详细易读清晰。

ListView页的配置:

分页一般用FromView,在FromView中获得控件时不用再e.Item....而是直接FromView1.FindControl("TextBox");

设置InsertItemPosition="None"因为不在本页编辑了,设置None后如果数据为空,则显示<EmptyDataTemplate>模板里面的内容,

删掉各种没用的模板,然后在每行添加“查看”“编辑”按钮(超链接)带着ID和action=(edit/view/addnew)重定向到ListViewUI页,

在DataSet中设定GetDataById查看单条数据方法,然后在ListViewUI页添加ObjectDataSource控件绑定数据选择GetDataById方法,

选择参数源为QueryString(请求字符串也就是地址栏),QueryStringField(传递的参数名)设置为Id

之后引入FormView控件(编辑单条数据的控件)绑定ObjectDataSource数据源,然后在页面Page_Load事件中根据Resope action=(edit/view/addnew)判断采用哪种模板.

添加,编辑后重定向到ListView页(ItemInserted/ItemUpdataed).

cs页代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ListView控件的绑定
{
    public partial class EditUI : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request["action"] == "edit")
                {
                    FormView1.ChangeMode(FormViewMode.Edit);
                }
                else if (Request["action"] == "addnew")
                {
                    FormView1.ChangeMode(FormViewMode.Insert);
                }
                else if (Request["action"] == "view")
                {
                    FormView1.ChangeMode(FormViewMode.ReadOnly);
                }
                else
                {
                    throw new Exception("action错误!");
                }
            }
        }

        protected void FormView1_ItemInserted(object sender, FormViewInsertedEventArgs e)
        {
            Response.Redirect("ListViewUI.aspx");
        }

        protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
        {
            Response.Redirect("ListViewUI.aspx");
        }
    }
}

 

在模板中巧用<asp:Literal>控件添加TextBox的jq显示日历事件(此方法IE6不兼容,浏览器问题)

<link href=""../css/ui-lightness/jquery-ui-1.8.2.custom.css" rel="stylesheet" type="text/css">

<script type="text/javascript" src="../js/jquery-1.4.2.js"></script>

<script type="text/javascript" src="../js/jquery-ui-1.8.2.custom.min.js"></script>

在模板中添加<asp:Literal>控件,然后在cs页把ItemCreate事件中

if (FormView1.ChangeMode == FormViewMode.Insert)
{

Literal lit=(Literal)FindContorl("Literal1");

TextBox txtId=FindControl("TextBox1");

lit.Text=txtId.ClientId;

 }

<scritp type="text/javascript">

$('#<asp:Literal Id="litId"> runat="server"').datepicker();

</scritp>