• Repeater控件中如何做编辑和删除功能


      做asp.net有六年了,Repeater控件使用了无数次,但每次都是只做显示。

      今天这个需要编辑和删除功能,google了一下。Repeater需要加OnItemDataBound事件。

    OnItemCommand="Repeater1_ItemCommand"

    1.删除功能和GridView控件差不多,前台一个Button,设置Button的

    CommandArgument='<%# Eval("Id")%>' CommandName="Delete"

    这里注意的一点是CommandArgument的值一定要用单引号,否则报错。

    后台代码

    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Delete")
            {       
                this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "key""alert('删除ID:" + e.CommandArgument + "');"true);
    int id = Convert.ToInt32(e.CommandArgument);
    // ...删除处理...
            }

            BindGrid();
        }

    2.对于编辑操作,有两种方法,第一是在前台Repeater的<ItemTemplate>看放置两个Panel,分别放显示和编辑的内容,用ItemDataBound来控制显示哪一个,按钮类似于删除按钮那样。

    OnItemDataBound="Repeater1_ItemDataBound"
    protected void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
        {

            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                DataRowView rowv = (DataRowView)e.Item.DataItem;
                string userid = rowv["userid"].ToString();

                if (userid != id.ToString())
                {
                    ((Panel)e.Item.FindControl("plItem")).Visible = true;
                    ((Panel)e.Item.FindControl("plEdit")).Visible = false;
                }
                else
                {
                    ((Panel)e.Item.FindControl("plItem")).Visible = false;
                    ((Panel)e.Item.FindControl("plEdit")).Visible = true;
                }

            }
        }

    在ItemCommand方法中

    View Code
        protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Edit")
            {
                id = int.Parse(e.CommandArgument.ToString());
            }
            else if (e.CommandName == "Cancel")
            {
                id = -1;
            }
            else if (e.CommandName == "Update")
            {
                //Update.

                string username = ((TextBox)this.Repeater1.Items[e.Item.ItemIndex].FindControl("UserName")).Text.Trim();

                this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "key""alert('更新ID:" + e.CommandArgument + ";页面值:姓名=" + username + "');"true);
            }
            else if (e.CommandName == "Delete")
            {
                //Delete.            
                this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "key""alert('删除ID:" + e.CommandArgument + "');"true);
            }

            BindGrid();
        }

    另外一种编辑的方法是,点编辑按钮跳到新的页面去编辑,保存完再跳回来。我本人认为这种形式更好一些,我看了一些论坛或博客等基本都采用的这种方法。

  • 相关阅读:
    增加正则项Regularization to Prevent Overfitting
    feature_column、fc.input_layer以及各种类型的column如何转化
    input_fn如何读取数据
    matplotlib.pyplot如何绘制多张子图
    机器学习之杂乱笔记
    Adobe Flash Player
    LSTM/GRU-讲得非常细致
    anaconda python36 tensorflow virtualenv
    畅通工程-HZNU寒假集训
    食物链-HZUN寒假集训
  • 原文地址:https://www.cnblogs.com/ggooo/p/2368117.html
Copyright © 2020-2023  润新知