[ASP.NET]GridViewカスタム編集、更新、キャンセル、削除

5679 ワード

1、問題の説明
今日ネット上である人がどのようにGridViewの編集をカスタマイズすることを聞くことを見て、更新して、取り消して、ボタンを削除して、GridViewは持っているのがあまりにもみっともないです
2、要求に達する
トランスフォーム編集、更新、キャンセル、削除ボタン
 
3、実現方法
(1)最初のステップでGridViewの「CommandField」を「TemplateFiledテンプレート」に変更
(2)第2のステップでは、「テンプレートの編集」でこのフィールドを編集します.方法は、他のテンプレートの編集と同じです.例えば、私の例では、「ItemTemplate」に2つのImageButtonを追加し、「EditTemplate」に2つのLinkButtonを追加します.
編集、削除、更新、キャンセルをそれぞれ表します.
(3)第3歩は、RowCancelingEdit、RowEditing、RowUpdating、RowDeletingなどのイベントを追加することです.
注意:手順2の4つのコントロールには、「Edit」、「Delete」、「Update」、「Cancel」のそれぞれにCommandNameを追加する必要があります.
Okが成功した!
マイコード:






    


    <form id="form1" runat="server">
    <div>
        <gridview id="GridView1" runat="server" autogeneratecolumns="False" datakeynames="CID" onrowcancelingedit="GridView1_RowCancelingEdit" onrowupdating="GridView1_RowUpdating" onrowediting="GridView1_RowEditing" onrowdeleting="GridView1_RowDeleting">
            <columns>
                <templatefield headertext="  ">
                    <itemtemplate>
                        <label text="<%# Eval("CID") %>" runat="server"/>
                    </itemtemplate>
                    <edititemtemplate>
                        <textbox id="TextBox1" runat="server" text="<%# Eval("CID") %>"/>
                    </edititemtemplate>
                </templatefield>
                <templatefield headertext="   ">
                    <itemtemplate>
                        
                    </itemtemplate>
                    <edititemtemplate>
                        <textbox id="TextBox2" runat="server" text="<%#DataBinder.Eval(Container.DataItem,"CName") %>"/>
                    </edititemtemplate>
                </templatefield>
                <templatefield>
                    <itemtemplate>
                        <imagebutton id="Button2" runat="server" imageurl="~/Imgs/btnEdit.png" commandname="Edit"/>
                      <imagebutton id="ImageButton1" runat="server" imageurl="~/Imgs/btnDelete.png" commandname="Delete"/>
                    </itemtemplate>
                    <edititemtemplate>
                        <linkbutton id="Button1" runat="server" text="  " commandname="Update"/>
                        <linkbutton id="Button3" runat="server" text="  " commandname="Cancel"/>
                    </edititemtemplate>
                </templatefield>
            </columns>
        </gridview>
    </div>
    </form>


</code></pre> 
  <p><br/>  </p> 
  <pre><code> string strCon = "Data Source=192.168.0.105;Initial Catalog=TreeView;Integrated Security=True";
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                BindGridView();
            }
        }

        private void BindGridView()
        {
            SqlConnection con = new SqlConnection(strCon);

            con.Open();
            SqlCommand cmd = new SqlCommand("SELECT [CID], [CName] FROM [ClassTable]", con);
            SqlDataAdapter adp = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            adp.Fill(ds);
            this.GridView1.DataSource = ds.Tables[0];
            this.GridView1.DataBind();
            con.Close();
        }


        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            BindGridView();
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            BindGridView();
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string id = GridView1.DataKeys[e.RowIndex].Values[0].ToString();
            string CID = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1")).Text;
            string CName = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox2")).Text;
            string strUpdate = "UPDATE ClassTable set CID='" + CID + "',CName='" + CName + "' where CID=" + CID;

            SqlConnection con = new SqlConnection(strCon);
            con.Open();
            SqlCommand cmd = new SqlCommand(strUpdate, con);
            cmd.ExecuteNonQuery();
            con.Close();
            GridView1.EditIndex = -1;
            BindGridView();

        }

        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string id = GridView1.DataKeys[e.RowIndex].Values[0].ToString();
            string strDel = "DELETE FROM ClassTable where CID=" + id;
            SqlConnection con = new SqlConnection(strCon);
            con.Open();
            SqlCommand cmd = new SqlCommand(strDel, con);
            cmd.ExecuteNonQuery();
            con.Close();
            BindGridView();

        }</code></pre> 
  <p><br/>  </p> 
 </div> 
</div>
                            </div>
                        </div>