VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 593|回复: 5

求一个代码简洁的增删改的例子,要求使用gridview!

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-27 17:40:01 | 显示全部楼层 |阅读模式
修改增加,最好是一个单独界面!
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-22 12:45:01 | 显示全部楼层
我正要做一个,UP
回复

使用道具 举报

0

主题

58

帖子

32.00

积分

新手上路

Rank: 1

积分
32.00
发表于 2020-2-22 16:00:01 | 显示全部楼层
<%@ Page Language="C#" ClassName="Default_aspx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">
    void CancelButton1_Click(object sender, EventArgs e)
    {

        GridView1.ShowFooter = false;

    }
    void AddButton1_Click(object sender, EventArgs e)
    {

        GridView1.ShowFooter = true;

    }

    void Button1_Click(object sender, EventArgs e)

    {
        
        TextBox customerID = GridView1.FooterRow.FindControl("CustomerIDTextBox") as TextBox;

        TextBox companyName = GridView1.FooterRow.FindControl("CompanyNameTextBox") as TextBox;

        DropDownList ContactTitle = GridView1.FooterRow.FindControl("ContactTitleDropDownList") as DropDownList;

        SqlDataSource1.InsertParameters["CustomerID"].DefaultValue = customerID.Text;

        SqlDataSource1.InsertParameters["CompanyName"].DefaultValue = companyName.Text;

        SqlDataSource1.InsertParameters["ContactTitle"].DefaultValue = ContactTitle.SelectedValue;

        SqlDataSource1.Insert();

    }


</script>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head id="Head1" runat="server">

    <title>Untitled Page</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>
    <asp:Button ID="AddButton1" runat="Server" Text="Add new Item" OnClick="AddButton1_Click" />


    <asp:GridView ID="GridView1" Runat="server" DataSourceID="SqlDataSource1" DataKeyNames="CustomerID"

            AutoGenerateColumns="False" ShowFooter="True">

            <Columns>

                <asp:TemplateField>

                    <ItemTemplate>

                        <asp:Label ID="CustomerIDLabel" Runat="Server"><%# Eval("CustomerID") %></asp:Label>

                    </ItemTemplate>

                    <FooterTemplate>

                        <asp:TextBox ID="CustomerIDTextBox" Runat="server"></asp:TextBox>

                    </FooterTemplate>

                </asp:TemplateField>

                <asp:TemplateField>

                    <ItemTemplate>

                        <asp:Label ID="CompanyNameLabel" Runat="Server"><%# Eval("CompanyName") %></asp:Label>

                    </ItemTemplate>

                    <FooterTemplate>

                        <asp:TextBox ID="CompanyNameTextBox" Runat="server"></asp:TextBox>

                    </FooterTemplate>

                </asp:TemplateField>

                <asp:TemplateField>

                    <FooterTemplate>

                        <asp:DropDownList ID="ContactTitleDropDownList" Runat="server" DataSourceID="SqlDataSource2" DataTextField="ContactTitle" DataValueField="ContactTitle">

                        </asp:DropDownList>

                        <asp:SqlDataSource ID="SqlDataSource2" Runat="server" SelectCommand="SELECT DISTINCT [ContactTitle] FROM [Customers]"

                            ConnectionString="server=localhost;uid=sa;password=xxx;database=northwind">

                        </asp:SqlDataSource>

                        <asp:Button ID="Button1" Runat="server" Text="Add" OnClick="Button1_Click" />
  <asp:Button ID="CancelButton1" Runat="server" Text="Cancel" OnClick="CancelButton1_Click" />

                    </FooterTemplate>

                    <ItemTemplate>

                        <asp:DropDownList ID="ContactTitleDropDown" SelectedValue='<%# Bind("ContactTitle") %>' Runat="Server" DataSourceID="SqlDataSource3" DataTextField="ContactTitle" DataValueField="ContactTitle" ></asp:DropDownList>

                        <asp:SqlDataSource ID="SqlDataSource3" Runat="server" SelectCommand="SELECT DISTINCT [ContactTitle] FROM [Customers]"

                            ConnectionString="server=localhost;uid=sa;password=xxx;database=northwind" EnableCaching="True">

                        </asp:SqlDataSource>

                    </ItemTemplate>

                </asp:TemplateField>

            </Columns>

        </asp:GridView>

        <asp:SqlDataSource ID="SqlDataSource1" Runat="server"

            InsertCommand="INSERT INTO [Customers] ([CustomerID], [CompanyName], [ContactTitle]) VALUES (@CustomerID, @CompanyName, @ContactTitle)"

            SelectCommand="SELECT [CustomerID], [CompanyName], [ContactTitle] FROM [Customers]"

            ConnectionString="server=localhost;uid=sa;password=xxxxx;database=northwind">

            <DeleteParameters>

                <asp:Parameter Type="String" Name="CustomerID"></asp:Parameter>

            </DeleteParameters>

            <UpdateParameters>

                <asp:Parameter Type="String" Name="CompanyName"></asp:Parameter>

                <asp:Parameter Type="String" Name="ContactTitle"></asp:Parameter>

                <asp:Parameter Type="String" Name="CustomerID"></asp:Parameter>

            </UpdateParameters>

            <InsertParameters>

                <asp:Parameter Type="String" Name="CustomerID"></asp:Parameter>

                <asp:Parameter Type="String" Name="CompanyName"></asp:Parameter>

                <asp:Parameter Type="String" Name="ContactTitle"></asp:Parameter>

            </InsertParameters>

        </asp:SqlDataSource>

    </div>

    </form>

</body>

</html>
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-22 22:00:01 | 显示全部楼层
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridView_2.aspx.cs" Inherits="GridView_2" %>
<!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>GridView的在线编辑功能</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
           <asp:GridView ID="GridView1" DataKeyNames="id"  runat="server" AllowPaging="True" AutoGenerateColumns="False"
            PageSize="4" OnPageIndexChanging="GridView1_PageIndexChanging" Width="100%" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowDeleting="GridView1_RowDeleting" >
            <Columns>
                <asp:BoundField DataField="id" HeaderText="ID编号" ReadOnly="true"  />
                <asp:BoundField DataField="name" HeaderText="名称" ReadOnly="true"  />
                <asp:ImageField DataImageUrlField="face" HeaderText="头像" ReadOnly="true"  />         
                <asp:BoundField DataField="tel" HeaderText="电话" />
                <asp:CommandField HeaderText="更新" ShowEditButton="True" />
                <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />  
            </Columns>
        </asp:GridView>
    </div>
    </form>
</body>
</html>
注意,我们在上面声明GridView控件时的代码,OnRowCancelingEdit="GridView1_RowCancelingEdit"指定执行取消编辑的事件名称, OnRowEditing="GridView1_RowEditing"表示激活编辑的事件名称, OnRowUpdating="GridView1_RowUpdating" 表示确认更新的事件名称, OnRowDeleting="GridView1_RowDeleting"表示执行删除的事件名称。在默认的情况下,GridView在编辑状态下的所有列都是可编辑的,如果我们不允许编辑某一列,指定某列的ReadOnly="true"。这里,我们假设只允许编辑电话列,其他列都不允许编辑。
GridView_2.aspx.cs代码如下。
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;

public partial class GridView_2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            //把生成的数据表保存在Session中,
            Session["DataBase"] = CreatDataBase();
            //调用绑定方法
            GridViewDataBind();
        }

    }
    //数据绑定
    protected void GridViewDataBind()
    {
        DataTable dt = (DataTable)Session["DataBase"];
        //指定GridView1控件的数据源
        this.GridView1.DataSource = dt;
        //调用GridView1控件的DataBind方法
        this.GridView1.DataBind();

    }
    //生成数据表,数据表是数据绑定控件的数据源
    protected DataTable CreatDataBase()
    {
        DataTable dt = new DataTable();
        DataColumn dc = new DataColumn("id", typeof(int));
        dt.Columns.Add(dc);
        dc = new DataColumn("name", typeof(string));
        dt.Columns.Add(dc);
        dc = new DataColumn("tel", typeof(string));
        dt.Columns.Add(dc);
        dc = new DataColumn("email", typeof(string));
        dt.Columns.Add(dc);
        dc = new DataColumn("face", typeof(string));
        dt.Columns.Add(dc);
        int i = 1;
        DataRow dr;
        for (i = 1; i < 10; i++)
        {
            dr = dt.NewRow();
            dr["id"] = i;
            dr["name"] = "Name . " + i.ToString() + " .";
            dr["tel"] = "+86-755-8839-3207";
            dr["email"] = "Email_" + i.ToString() + "@hotmail.com";
            dr["face"] = "./images/" + i.ToString() + ".gif";
            dt.Rows.Add(dr);
        }
        return dt;
    }
    // GridView控件的翻页事件
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.GridView1.PageIndex = e.NewPageIndex;
        GridViewDataBind();
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        this.GridView1.EditIndex = e.NewEditIndex;
        GridViewDataBind();
    }
    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        this.GridView1.EditIndex = -1;
        GridViewDataBind();
    }
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {      
        // 当前操作行 ,当前操作行的Index=e.RowIndex
        GridViewRow dvr = GridView1.Rows[e.RowIndex];
        
        //获取更新的单元格  
        TableCell tc = dvr.Cells[3];   
        //单元格内的TextBox控件。
        TextBox tb = (TextBox)tc.Controls[0];
        //获取TextBox控件的Txext,就是更新后的值
        string NewValue = tb.Text;
        //获取数据表中的ID键值
        string id = dvr.Cells[0].Text;
        /*-----------------------------------
         * 上面获取id的方法 等价于string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
         * 虽然上面的方法比较繁琐,但是这个方法可以获取其他列的内容,
         * 也可以获取没个单元格内其他控件的属性,这个在负责的GridView表中尤其有用
         *---------------------------------------------------
         * */
        DataTable dt = (DataTable)Session["DataBase"];      
        foreach (DataRow dr in dt.Rows)
        {
            //找到原数据,更新
            if (dr["id"].ToString() == id)
            {
                dr["tel"] = NewValue;
                break;
            }
        }
        //将更新后的数据保存到Seesion中,实际运用中,我们将保存到数据库中
        Session["DataBase"] = dt;
        //还原编辑状态
        this.GridView1.EditIndex = -1;
        //刷新数据
        GridViewDataBind();
    }

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
        DataTable dt = (DataTable)Session["DataBase"];
        foreach (DataRow dr in dt.Rows)
        {
            //找到原数据,更新
            if (dr["id"].ToString() == id)
            {
                dt.Rows.Remove(dr);
                break;
            }
        }
        //将更新后的数据保存到Seesion中,实际运用中,我们将保存到数据库中
        Session["DataBase"] = dt;      
        //刷新数据
        GridViewDataBind();
    }
}
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-22 23:45:02 | 显示全部楼层
3.3.3.3  GridView控件的动态排序功能
GridView控件提供了排序功能,即在数据绑定前指定排序字段。虽然这种排序可以应付一些需要,但更多的时候我们需要一种动态的排序。在GridView控件的配置属性中AllowPaging="True"表示允许排序,如果指定哪一列为排序列,只需添加配置属性SortExpression就可以了。实例如下。
新建页面GridView_3.aspx,并添加GridView控件,代码如下。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridView_3.aspx.cs" Inherits="GridView_3" %>
<!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>GridView的排序功能</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
            PageSize="4" OnPageIndexChanging="GridView1_PageIndexChanging" Width="100%" AllowSorting="True" OnSorting="GridView1_Sorting" >
            <Columns>
                <asp:BoundField DataField="id" HeaderText="ID编号"  ReadOnly="True" SortExpression="id" />
                <asp:BoundField DataField="name" HeaderText="名称"   ReadOnly="True"  SortExpression="name "  />
                <asp:ImageField DataImageUrlField="face" HeaderText="头像"  ReadOnly="True"   />         
                <asp:BoundField DataField="tel" HeaderText="电话"  SortExpression="tel"  />   
            </Columns>
</asp:GridView>
    </div>
    </form>
</body>
</html>
注意,OnSorting="GridView1_Sorting"表示当排序事件发生时,有那个事件进行处理。
GridView_3.aspx.cs代码如下。
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;

public partial class GridView_3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            //把生成的数据表保存在Session中,
            Session["DataBase"] = CreatDataBase();
            //默认的排序字段
            ViewState["Sort"] = "id";
            //默认的排序规则
            ViewState["Direction"] = "ASC";
            //调用绑定方法
            GridViewDataBind();
        }

    }
    //数据绑定
    protected void GridViewDataBind()
    {
        // 获取数据表
        DataTable dt = (DataTable)Session["DataBase"];
        // 创建数据视图
        DataView dv = dt.DefaultView;
        //指定视图的排序规则
        dv.Sort = ViewState["Sort"].ToString() + " " +ViewState["Direction"].ToString();   
        //指定GridView控件的数据源  
        this.GridView1.DataSource = dv;
        this.GridView1.DataBind();

    }
    //生成数据表,数据表是数据绑定控件的数据源
    protected DataTable CreatDataBase()
    {
        DataTable dt = new DataTable();
        DataColumn dc = new DataColumn("id", typeof(int));
        dt.Columns.Add(dc);
        dc = new DataColumn("name", typeof(string));
        dt.Columns.Add(dc);
        dc = new DataColumn("tel", typeof(string));
        dt.Columns.Add(dc);
        dc = new DataColumn("email", typeof(string));
        dt.Columns.Add(dc);
        dc = new DataColumn("face", typeof(string));
        dt.Columns.Add(dc);
        int i = 1;
        DataRow dr;

        for (i = 1; i < 10; i++)
        {
            dr = dt.NewRow();
            dr["id"] = i;
            dr["name"] = "Name . " + i.ToString() + " .";
            dr["tel"] = "+86-755-8839-3207";
            dr["email"] = "Email_" + i.ToString() + "@hotmail.com";
            dr["face"] = "./images/" + i.ToString() + ".gif";
            dt.Rows.Add(dr);
        }
        return dt;
    }
    // GridView控件的翻页事件
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.GridView1.PageIndex = e.NewPageIndex;
        GridViewDataBind();
    }
    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        // 根据当前排序规则,动态变化排序规则
        if (ViewState["Direction"].ToString() == "ASC")
            ViewState["Direction"] = "DESC";
        else
            ViewState["Direction"] = "ASC";
        // 获取排序字段
       ViewState["Sort"] = e.SortExpression;
     GridViewDataBind();
    }
    protected void GridView1_DataBound(object sender, EventArgs e)
    {
        // Get the header row.
        GridViewRow headerRow = GridView1.HeaderRow;

        // Get the footer row.
        GridViewRow footerRow = GridView1.FooterRow;

        // Set the font color of the header and footer rows
        // based on the sort direction.
        switch (this.GridView1.SortDirection)
        {
            case SortDirection.Ascending:
                headerRow.ForeColor = System.Drawing.Color.Green;
                footerRow.ForeColor = System.Drawing.Color.Green;
                break;
            case SortDirection.Descending:
                headerRow.ForeColor = System.Drawing.Color.Red;
                footerRow.ForeColor = System.Drawing.Color.Red;
                break;
            default:
                headerRow.ForeColor = System.Drawing.Color.Black;
                footerRow.ForeColor = System.Drawing.Color.Black;
                break;
        }
        // Display the sort order in the footer row.
        footerRow.Cells[0].Text = "Sort Order = " + GridView1.SortDirection.ToString();
      

    }
}
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-23 06:15:02 | 显示全部楼层

以上两个案例,复制粘贴就能用!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表