GridView与DetailsView控件联用实例代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PersonMag2.aspx.cs" Inherits="PersonMag" %>

<!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>
     <link rel="STYLESHEET" type="text/css" href="css/pagefont.css" mce_href="css/pagefont.css">
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td height: 399px;">  
      <fieldset style="width: 98%">
                <legend class="MyTitle">管理档案</legend>
                <br />
                <table width="100%" border="0" cellspacing="10" cellpadding="0">
                  <tr>
                    <td>
                        <asp:GridView ID="GridView1" runat="server" CellPadding="3" AutoGenerateColumns="False" Width="100%" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" DataKeyNames="user_id" OnRowDataBound="GridView1_RowDataBound" OnRowDeleting="GridView1_RowDeleting" HorizontalAlign="Center" PageSize="20" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" OnRowUpdating="GridView1_RowUpdating" OnSelectedIndexChanging="GridView1_SelectedIndexChanging">
                            <FooterStyle BackColor="White" ForeColor="#000066" />
                            <RowStyle ForeColor="#000066" />
                            <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
                            <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
                            <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
                            <Columns>
                                <asp:BoundField DataField="User_name" HeaderText="姓名" />
                                <asp:BoundField DataField="User_dept" HeaderText="部门" >
                                    <ItemStyle HorizontalAlign="Center" />
                                </asp:BoundField>
                                <asp:BoundField DataField="User_position" HeaderText="职务" >
                                    <ItemStyle HorizontalAlign="Center" />
                                </asp:BoundField>
                                <asp:BoundField DataField="user_sex" HeaderText="性别" >
                                    <ItemStyle HorizontalAlign="Center" />
                                </asp:BoundField>
                                <asp:BoundField DataField="user_mobile" HeaderText="手机" />
                                 <asp:TemplateField HeaderText="注册日期">
                                    <ItemTemplate>
                                        <%# string.Format("{0:yyyy}-{0:MM}-{0:dd}", Eval("user_AddDate"))%>
                                    </ItemTemplate>
                                     <ItemStyle HorizontalAlign="Center" />
                                </asp:TemplateField>
                                <asp:HyperLinkField DataNavigateUrlFields="user_id" DataNavigateUrlFormatString="PersonSee.aspx?id={0}" HeaderText="查看区" Text="查看" >
                                <ItemStyle HorizontalAlign="Center" />
                                </asp:HyperLinkField>
                                <asp:HyperLinkField DataNavigateUrlFields="User_id" DataNavigateUrlFormatString="PersonEdit.aspx?id={0}"
                                    HeaderText="修改区" Text="修改" >
                                    <ItemStyle HorizontalAlign="Center" />
                                </asp:HyperLinkField>
                                <asp:ButtonField CommandName="Delete" HeaderText="删除区" ShowHeader="True" Text="删除" >
                                    <ItemStyle HorizontalAlign="Center" />
                                </asp:ButtonField>
                             <asp:ButtonField CommandName="Update" HeaderText="还原密码" ShowHeader="True" Text="还原密码" >
                                <ItemStyle HorizontalAlign="Center" />
                            </asp:ButtonField>
                                <asp:ButtonField CommandName="Select" HeaderText="详细资料" ShowHeader="True" Text="详细资料..." />
                            </Columns>
                        </asp:GridView>
                    </td>
                    <td rowspan="2" width="40%"><asp:DetailsView ID="DetailsView1" runat="server" Height="50px"
                            Width="80%" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" HeaderText="详细资料" HorizontalAlign="Center" AutoGenerateEditButton="True" DataKeyNames="user_id" OnItemUpdating="DetailsView1_ItemUpdating" OnModeChanging="DetailsView1_ModeChanging" AutoGenerateInsertButton="True" AutoGenerateRows="False" AutoGenerateDeleteButton="True" OnItemDeleting="DetailsView1_ItemDeleting" OnItemInserting="DetailsView1_ItemInserting">
                        <FooterStyle BackColor="White" ForeColor="#000066" />
                        <EditRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
                        <RowStyle ForeColor="#000066" />
                        <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
                        <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
                        <Fields>
                            <asp:BoundField DataField="user_id" HeaderText="ID" />
                            <asp:BoundField DataField="user_name" HeaderText="姓名" />
                            <asp:BoundField DataField="user_sex" HeaderText="性别" />
                        </Fields>
                        </asp:DetailsView>
                    </td>
                  </tr>
                  <tr>
                    <td>
                        <asp:Label ID="Label1" runat="server" Text="主题数:"></asp:Label>
                        <asp:Label ID="Label2" runat="server">Label</asp:Label>
                        &nbsp; &nbsp;
                        <asp:Label ID="Label6" runat="server" Text="每页共:"></asp:Label>
                        <asp:Label ID="Label3" runat="server">Label</asp:Label>
                        &nbsp; &nbsp;
                        <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click1">首页</asp:LinkButton>
                        <asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkButton2_Click1">上一页</asp:LinkButton>
                        <asp:Label ID="Label4" runat="server">Label</asp:Label>
                        <asp:Label ID="Label7" runat="server" Text="/"></asp:Label>
                        <asp:Label ID="Label5" runat="server">Label</asp:Label>
                        <asp:LinkButton ID="LinkButton3" runat="server" OnClick="LinkButton3_Click1">下一页</asp:LinkButton>
                        <asp:LinkButton ID="LinkButton4" runat="server" OnClick="LinkButton4_Click1">未页</asp:LinkButton>
                        </td>
                  </tr>
                </table>
                <br />
             </fieldset>
           </td>
        </tr>
     </table>
    </div>
    </form>
</body>
</html>

 

后台代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class PersonMag : System.Web.UI.Page
{
    SqlConnection conn = connsql.ZYJCreateConnection();
    string sqlstr = "";
    string user_id = "";
    string User_Roles = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        CheckPower c = new CheckPower();//验证是否登陆了

        sqlstr = "select * from UserList order by user_id desc";
        if (!IsPostBack)
        {
            //权限设置
            //if (Request.Cookies["user_id"] != null)
            //{
            //    user_id = Request.Cookies["user_id"].Value.ToString();
            //    User_Roles = Request.Cookies["User_Roles"].Value.ToString().Trim();
            //}
            //if (User_Roles == "3")
            //{
            //    GridView1.Columns[7].Visible = false;
            //    GridView1.Columns[8].Visible = false;
            //    GridView1.Columns[9].Visible = false;
            //}
            //end

            BindGrid(sqlstr);
        }
    }

    private void BindGrid(string sqlstr)
    {
        SqlDataAdapter myCommand = new SqlDataAdapter(sqlstr, conn);
        DataSet ds = new DataSet();
        myCommand.Fill(ds, "Authors");
        GridView1.DataSource = ds.Tables["Authors"].DefaultView;
        GridView1.DataBind();

        //显示分面的相关信息
        Label2.Text = ds.Tables[0].Rows.Count.ToString();  //显示总记录数
        GridView1.PageSize = 20;              //设置每页记录数
        Label3.Text = GridView1.PageSize.ToString();    //显示每页记录数
        int d;
        d = GridView1.PageIndex + 1;
        Label4.Text = d.ToString();            //显示当前页码
        Label5.Text = GridView1.PageCount.ToString();   //显示总页码
    }


    //GridView控件上自代的页码
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.GridView1.PageIndex = e.NewPageIndex;
        BindGrid(sqlstr);
    }

    //点击首页
    protected void LinkButton1_Click1(object sender, EventArgs e)
    {
        GridView1.PageIndex = 0;
        BindGrid(sqlstr);
    }

    //点击上一页
    protected void LinkButton2_Click1(object sender, EventArgs e)
    {
        if (GridView1.PageIndex != 0)
        {
            GridView1.PageIndex = GridView1.PageIndex - 1;
            BindGrid(sqlstr);
        }
    }

    //点击下一页
    protected void LinkButton3_Click1(object sender, EventArgs e)
    {
        if (GridView1.PageIndex != GridView1.PageCount - 1)
        {
            GridView1.PageIndex = GridView1.PageIndex + 1;
            BindGrid(sqlstr);
        }
    }

    //点击末页
    protected void LinkButton4_Click1(object sender, EventArgs e)
    {
        GridView1.PageIndex = GridView1.PageCount - 1;
        BindGrid(sqlstr);
    }
   
    //删除数据
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string sqldel = "delete from UserList where user_id=" + int.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString().Trim());

        SqlCommand myconn = new SqlCommand(sqldel, conn);
        conn.Open();
        myconn.ExecuteNonQuery();
        //lbsql.Text = "<b>已删除记录</b><br>" + sqldel;
        conn.Close();
        BindGrid(sqlstr);

    }

    //GridView实现删除时弹出确认对话框
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        //如果是绑定数据行
        if (e.Row.RowType == DataControlRowType.DataRow) //如果行的类别是数据行,就执行
        {
            if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate || e.Row.RowState == DataControlRowState.Selected)
            {
              //((LinkButton)e.Row.Cells[13].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:ID号为/" " + e.Row.Cells[0].Text.ToString().Trim() + " /"的员工档案吗?')");
              ((LinkButton)e.Row.Cells[8].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:姓名为/" " + e.Row.Cells[0].Text.ToString().Trim() + " /"的员工档案吗?')");

            }
        }
    }

    //还原密码
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        string sqlUpdate = "update UserList set User_Pwd=@UserPwd Where User_Id='" + int.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString().Trim()) + "'";
        SqlCommand MyConn = new SqlCommand(sqlUpdate, conn);
        MyConn.Parameters.Add(new SqlParameter("@UserPwd", SqlDbType.VarChar, 500));
        MyConn.Parameters["@UserPwd"].Value = PwdMd5.md5l("123456");
        conn.Open();
        MyConn.ExecuteNonQuery();
        conn.Close();
        Response.Write("<mce:script language='javascript'><!--
alert('还原密码成功!!还原密码为123456');location='PersonMag.aspx'
// --></mce:script>");
    }


    //绑定DetailsView
    private void BindDetails(string sqlstr)
    {

        SqlDataAdapter myCommand = new SqlDataAdapter(sqlstr, conn);
        DataSet ds = new DataSet();
        myCommand.Fill(ds, "Authors");
        DetailsView1.DataSource = ds.Tables["Authors"].DefaultView;
        DetailsView1.DataBind();

    }

    //点详细资料...
    protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        string sqlstr = "select * from UserList where user_id=" + int.Parse(GridView1.DataKeys[e.NewSelectedIndex].Value.ToString().Trim());
        BindDetails(sqlstr);
    }

    //不同状态
    protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
    {
        //点编辑
        if (e.NewMode == DetailsViewMode.Edit)
        {
            DetailsView1.ChangeMode(DetailsViewMode.Edit);
            string sqlstr = "select * from UserList where user_id=" + int.Parse(DetailsView1.DataKey.Value.ToString().Trim());
            BindDetails(sqlstr);

        }

        //点新建
        if (e.NewMode == DetailsViewMode.Insert)
        {
            DetailsView1.ChangeMode(DetailsViewMode.Insert);
        }

        //点取消
        if (e.NewMode == DetailsViewMode.ReadOnly)
        {
            string sqlstr = "";

            DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
            if (DetailsView1.DataKey.Value != null)
            {
                sqlstr = "select * from UserList where user_id=" + int.Parse(DetailsView1.DataKey.Value.ToString().Trim());

            }
            else
            {
                sqlstr = "select * from UserList where 1<>1";
            }
            BindDetails(sqlstr);

        }
    }

    //点更新
    protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
    {
        //string Dept_name = Convert.ToString(((TextBox)this.GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString().Trim());
        string name = ((TextBox)this.DetailsView1.Rows[1].Cells[1].Controls[0]).Text.ToString().Trim();
        string sex = ((TextBox)this.DetailsView1.Rows[2].Cells[1].Controls[0]).Text.ToString().Trim();

        string updateCmd = "update UserList set user_name='" + name + "', user_sex='" + sex + "' where user_ID=" +int.Parse(DetailsView1.DataKey.Value.ToString().Trim());
        SqlCommand myCmd = new SqlCommand(updateCmd, conn);
        conn.Open();
        myCmd.ExecuteNonQuery();
        conn.Close();
       
        DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
        string sqlstr = "select * from UserList where user_id=" + int.Parse(DetailsView1.DataKey.Value.ToString().Trim());//变为只读
        BindDetails(sqlstr);
        BindGrid("select * from UserList order by user_id desc");//更新gridview
    }

    //点插入
    protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
    {

        string insertCmd = "INSERT INTO [UserList]( [user_name], [user_pwd],[user_dept], [user_position], [user_sex], [user_birthday], [user_idcard], [user_tel], [user_mobile], [user_qq], [user_msn], [user_mail], [user_address], [user_post], [user_adddate], [user_num], [user_roles])"
                             + "VALUES(@user_name,@user_pwd,@user_dept,@user_position,@user_sex,@user_birthday,@user_idcard,@user_tel,@user_mobile,@user_qq,@user_msn,@user_mail,@user_address,@user_post,@user_adddate,1,'3')";

        SqlCommand myCommand = new SqlCommand(insertCmd, conn);

        myCommand.Parameters.Add(new SqlParameter("@user_name", SqlDbType.NVarChar, 10));
        myCommand.Parameters["@user_name"].Value = ((TextBox)this.DetailsView1.Rows[1].Cells[1].Controls[0]).Text.ToString().Trim();

        myCommand.Parameters.Add(new SqlParameter("@user_pwd", SqlDbType.NVarChar, 50));
        myCommand.Parameters["@user_pwd"].Value = FormsAuthentication.HashPasswordForStoringInConfigFile("123456", "MD5");

        myCommand.Parameters.Add(new SqlParameter("@user_dept", SqlDbType.NVarChar, 10));
        myCommand.Parameters["@user_dept"].Value = "";

        myCommand.Parameters.Add(new SqlParameter("@user_position", SqlDbType.NVarChar, 10));
        myCommand.Parameters["@user_position"].Value = "";

        myCommand.Parameters.Add(new SqlParameter("@user_sex", SqlDbType.NVarChar, 10));
        myCommand.Parameters["@user_sex"].Value = ((TextBox)this.DetailsView1.Rows[2].Cells[1].Controls[0]).Text.ToString().Trim();

        myCommand.Parameters.Add(new SqlParameter("@user_birthday", SqlDbType.NVarChar, 20));
        myCommand.Parameters["@user_birthday"].Value = "";

        myCommand.Parameters.Add(new SqlParameter("@user_idcard", SqlDbType.NVarChar, 20));
        myCommand.Parameters["@user_idcard"].Value = "";

        myCommand.Parameters.Add(new SqlParameter("@user_tel", SqlDbType.NVarChar, 20));
        myCommand.Parameters["@user_tel"].Value ="";

        myCommand.Parameters.Add(new SqlParameter("@user_mobile", SqlDbType.NVarChar, 20));
        myCommand.Parameters["@user_mobile"].Value = "";

        myCommand.Parameters.Add(new SqlParameter("@user_qq", SqlDbType.NVarChar, 20));
        myCommand.Parameters["@user_qq"].Value = "";

        myCommand.Parameters.Add(new SqlParameter("@user_msn", SqlDbType.NVarChar, 50));
        myCommand.Parameters["@user_msn"].Value = "";

        myCommand.Parameters.Add(new SqlParameter("@user_mail", SqlDbType.NVarChar, 50));
        myCommand.Parameters["@user_mail"].Value = "";

        myCommand.Parameters.Add(new SqlParameter("@user_address", SqlDbType.NVarChar, 50));
        myCommand.Parameters["@user_address"].Value ="";

        myCommand.Parameters.Add(new SqlParameter("@user_post", SqlDbType.NVarChar, 10));
        myCommand.Parameters["@user_post"].Value = "";

        myCommand.Parameters.Add(new SqlParameter("@user_adddate", SqlDbType.DateTime, 8));
        myCommand.Parameters["@user_adddate"].Value = DateTime.Now.ToString();            //显示详细的日期和时间

        conn.Open();
        myCommand.ExecuteNonQuery();
        conn.Close();

        //DetailsView1.ChangeMode(DetailsViewMode.ReadOnly); 注释后可以进行连续插入
        string sqlstr = "select * from UserList where 1<>1";
        BindDetails(sqlstr);
        BindGrid("select * from UserList order by user_id desc");//更新gridview

    }

    //点删除
    protected void DetailsView1_ItemDeleting(object sender, DetailsViewDeleteEventArgs e)
    {
        string sqldel = "delete from UserList where user_id=" + int.Parse(DetailsView1.DataKey.Value.ToString().Trim());

        SqlCommand myconn = new SqlCommand(sqldel, conn);
        conn.Open();
        myconn.ExecuteNonQuery();
        conn.Close();

        DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
        string sqlstr = "select * from UserList where 1<>1";
        BindDetails(sqlstr);
        BindGrid("select * from UserList order by user_id desc");//更新gridview
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值