八、初学.NET—GridView 中实现每一行的编辑、删除和更新语句,并且编辑模式绑定下拉框或者单选框。

前端:

在设计视图中 添加新列,选择CommandField ,选择按钮类型和命令按钮。

<asp:CommandField HeaderText="编辑" ShowEditButton="True" ShowHeader="True" />

给每个模板列增加编辑模板

//普通文本编辑模板

<asp:TemplateField HeaderText="专业名称" SortExpression="MajorName">

            <EditItemTemplate>

                <asp:TextBox ID="tb_MajorName" runat="server" Text='<%# Bind("MajorName") %>'></asp:TextBox>

            </EditItemTemplate>

            <ItemTemplate>

                <asp:Label ID="Label1" runat="server" Text='<%# Bind("MajorName") %>'></asp:Label>

            </ItemTemplate>

 </asp:TemplateField>

 

//单选框或者是下拉框绑定表或者其它数据源,可以使用DataSource指定数据源。

绑定到下拉框

前端:<asp:TemplateField HeaderText="所属系部名称" SortExpression="DepartmentName">

          <ItemTemplate>

                <asp:Label ID="lb_Department" runat="server" Text='<%# Bind("DepartmentName") %>'></asp:Label>

          </ItemTemplate>

          <EditItemTemplate>

              <asp:DropDownList ID="ddl_Department" runat="server" DataSource='<%#ddlDeparmentBind() %>' DataTextField="DepartmentName" DataValueField="DepartmentID"  >

              </asp:DropDownList>

          </EditItemTemplate>

       </asp:TemplateField>

public DataSet ddlDeparmentBind()

    {

      

        DataSet ds = new DataSet();

        using (SqlConnection conn = new SqlConnection(sConnectionString))

        {

            conn.Open();

            {

                using (SqlCommand cmd = new SqlCommand("select DepartmentName,DepartmentID from tbDepartment", conn))

                {

                    SqlDataAdapter da = new SqlDataAdapter(cmd);

                    da.Fill(ds);

                    return ds;

                }

            }

        }

    }

 

绑定到单选框

前台:

<asp:TemplateField HeaderText="评定等级">

         <ItemTemplate>

           <asp:RadioButtonList ID="rbl_Grade" runat="server" RepeatDirection="Horizontal" DataSource='<%#RblReviewOptionBind()%>' DataTextField="ReviewOptionName" DataValueField="ReviewOptionWeight" >

             </asp:RadioButtonList>

         </ItemTemplate>

       </asp:TemplateField>

后台:

public DataSet RblReviewOptionBind()

     {

         DataSet ds = new DataSet();

        using (SqlConnection conn = new SqlConnection(sConnectionString))

        {

            conn.Open();

            {

                using (SqlCommand cmd = new SqlCommand("select * from tbReviewOption order by ReviewOptionName", conn))

                {

                    SqlDataAdapter da = new SqlDataAdapter(cmd);

                    da.Fill(ds);

                    return ds;

                }

            }

        }

    }

 

//巧妙的绑定到下拉框,不一定是编辑模式才可用

前端:

<asp:TemplateField HeaderText="用户类型">

         <ItemTemplate>

           <%# FormatUserType(Eval("UserType").ToString()) %>

         </ItemTemplate>

  </asp:TemplateField>

后台:

protected string FormatUserType(string sUserType)

    {

        string[] arrs = new string[] {"管理员","教研室主任","评审人员" };

        return arrs[Convert.ToInt16(sUserType)];

    }

 

 

后台代码:实现进入编辑模式、退出编辑模式、更新和删除、选中操作,不要忘记绑定数据源。

protected void gv_ReviewOption_RowEditing(object sender, GridViewEditEventArgs e)

    {

        gv_ReviewOption.EditIndex = e.NewEditIndex;

        SetBind();  //进入编辑模式后绑定数据源

    }

protected void gv_ReviewOption_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

    {

        gv_ReviewOption.EditIndex = -1;//退出编辑模式要将 EdintIndex 设置为-1;

        SetBind(); ////退出编辑模式后绑定数据源

 

    }

//更新记录

protected void gv_ReviewOption_RowUpdating(object sender, GridViewUpdateEventArgs e)

    {

        int iIndex = Convert.ToInt16(e.RowIndex);

        GridViewRow gvr = gv_ReviewOption.Rows[iIndex];

        using (SqlConnection conn = new SqlConnection(sConnectionString))

        {

            string sSql = "update tbReviewOption set ReviewOptionName ='" + ((gvr.Cells[2].FindControl("tb_ReviewOptionName")) as TextBox).Text.Trim() + "',ReviewOptionWeight='" + Convert.ToDouble(((gvr.Cells[3].FindControl("tb_ReviewOptionWeight")) as TextBox).Text.Trim()) + "' where ReviewOptionID='" + gv_ReviewOption.DataKeys[iIndex].Value + "'";

            conn.Open();

            using (SqlCommand cmd = new SqlCommand(sSql, conn))

            {

                Page.ClientScript.RegisterStartupScript(this.GetType(), "", string.Format("<script>alert('成功更新{0}条记录')</script>", cmd.ExecuteNonQuery()));

            }

 

        }

        gv_ReviewOption.EditIndex = -1; //更新后要将 EdintIndex 设置为-1;

        SetBind();///更新后绑定数据源

 

    }

posted on 2013-04-10 19:08  众里寻他千万度  阅读(378)  评论(2编辑  收藏  举报

导航