• GridView 中如何实现编辑 删除(在编辑状态中 嵌套DropDownList)


    以下是前台的代码:

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" CellPadding="4"
                        ForeColor="#333333" GridLines="None" Width="650px"    onrowcancelingedit="GridView1_RowCancelingEdit"
                        onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating"
                        FooterStyle-BackColor="#990000" Font-Bold="true" DataKeyNames="UserID" onrowdatabound="GridView1_RowDataBound">
                        <columns>
                    <asp:BoundField DataField="UserID" HeaderText="UserID" ReadOnly="true" />
                    <asp:BoundField DataField="UserName" HeaderText="UserName" />
                    <asp:BoundField DataField="UserPwd" HeaderText="UserPwd" />
                    <%--<asp:BoundField DataField="Gender" HeaderText="Gender" />--%>
                    <asp:TemplateField HeaderText="Gender">
                    <EditItemTemplate>
                    <asp:DropDownList ID="Gender" runat="server">
                        </asp:DropDownList>
                        </EditItemTemplate>
                    <ItemTemplate>
                        <%# Eval("Gender")%>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="PhoneNumber" HeaderText="PhoneNumber" />
                    <asp:BoundField DataField="Address" HeaderText="Address" />
                    <asp:CommandField HeaderText="Select" ShowSelectButton="True" />
                    <asp:CommandField HeaderText="Edit" ShowEditButton="true" />
                    <asp:CommandField HeaderText="Delete" ShowDeleteButton="true" />
                    </columns>
                        <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" />
                    </asp:GridView>

    后台部分代码代码:  //关键是几个事件中的代码

      protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string sqlstr = "delete from [Kiros].[Static_User] where UserID=" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "";
            MyDBHelper Kiros = new MyDBHelper();
            Kiros.Excute_Command(sqlstr);
            GridView_Bind();
        }
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;   //显示编辑状态
            GridView_Bind();

        }

      ////更新事件
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)  
        {
            string ProcNameModify = "[Kiros].[ModifyUserInfo]";
            MyDBHelper Kiros2 = new MyDBHelper();
            string U1 = GridView1.Rows[e.RowIndex].Cells[0].Text;
            string U2 = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
            string U3 = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
            bool U4 = Convert.ToBoolean(((DropDownList)(GridView1.Rows[e.RowIndex].Cells[3].FindControl("Gender"))).SelectedValue);
            string U5 = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim();
            string U6 = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim();
            UserInfo UI2 = new UserInfo(U1, U2, U3, U4, U5, U6);
            UserInfo_Params UP2 = new UserInfo_Params();
            Kiros2.Proc_InsertRows_Excute(ProcNameModify, UP2.UserInfoToParams(UI2));
            GridView1.EditIndex = -1;
            GridView_Bind();
        }
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;   //关闭编辑状态
            GridView_Bind();
        }

        protected void GridView_Bind()   //给GridView绑定数据源
        {
            string ProcNameUI = "[Kiros].[ShowUserInfo]";
            MyDBHelper Kiros = new MyDBHelper();
            DataSet DS = new DataSet();
            DS = Kiros.Proc_ShowRows_DataSet(DS, ProcNameUI);
            GridView1.DataSource = DS;
            GridView1.DataBind();
        }

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowState == DataControlRowState.Edit || e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit))
            {
                DropDownList dll = (DropDownList)e.Row.FindControl("Gender");

                dll.Items.Add(new ListItem("Male", "true"));
                dll.Items.Add(new ListItem("Female", "false"));

            }
        }

    以上要注意的是   RowDataBound事件,在编辑状态中给DropDownList绑定值的时候,一定要加上判断语句:

     if (e.Row.RowState == DataControlRowState.Edit || e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit))

    来判断是否是编辑状态,GridView有几种状态,可以查询MSDN

  • 相关阅读:
    十. 代码格式化插件 Tag
    小知识点
    IE11 打开方式 出现两个图标
    一 OS X 焦点 切换
    九. 边栏工具 浏览器工具 SideBarEnhancements
    Django进阶之缓存和信号
    Django进阶之中间件
    Python 堡垒机编程之Paramiko
    Django ORM补充
    Web 开发基础之Html
  • 原文地址:https://www.cnblogs.com/Kiros/p/1885258.html
Copyright © 2020-2023  润新知