• 在GridView 中点击某一个按钮在此按钮的下行动态添加一行,再次点击第二次添加的行隐藏


    //页面内容

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
                onrowcommand="GridView1_RowCommand">
                <Columns>
                    <asp:TemplateField HeaderText="名称">
                        <ItemTemplate>
                            <asp:Label ID="lblText" runat="server" Text='<%# Eval("V_Text") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="键值">
                        <ItemTemplate>
                            <asp:Label ID="lblCode" runat="server" Text='<%# Eval("V_Code") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:LinkButton ID="lkBtn"  runat="server" CommandArgument='<%# Eval("V_Code") %>' CommandName="btnShow" >新增</asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>

    //后置代码 

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("btnShow"))
            {
                //创建一个GridView的一个分隔行(根据DataControlRowType来设置)
                // GridViewRow rowSeparator = new GridViewRow(0, 0, DataControlRowType.Separator, DataControlRowState.Normal);
                //或实现一个数据行
                GridViewRow rowSeparator = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Normal);
                //设置行的底色
                rowSeparator.BackColor = System.Drawing.Color.White;
                // 获取到行索引 RowIndex
                GridViewRow gvrow = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
                int index = gvrow.RowIndex;
                //获得当前的GridView
                GridView gv = (GridView)sender;
                //设置单元格集
                TableCellCollection cells = gv.Rows[index].Cells;
                //设置单元格,根据实际情况增加,我这儿是增加一个跨所有列的行
                TableCell separatorCell = new TableCell();
                //根据GridView的第一列的显示情况设置单元格和跨列数
                if (GridView1.Columns[0].Visible == true)
                {
                    //当前增加的行所跨的列是gv 的所有列
                    separatorCell.ColumnSpan = cells.Count-1;
                }
                else
                {
                    separatorCell.ColumnSpan = cells.Count - 1;
                }
                    //}
                    //单元格的对齐
                    separatorCell.HorizontalAlign = HorizontalAlign.Center;
                    //单元格的背景色
                    separatorCell.BackColor = System.Drawing.Color.FromArgb(226, 226, 226);
                    //单元格的高度
                    separatorCell.ControlStyle.Height = 10;

                    //在列中添加一个控件
                    TextBox tb = new TextBox();
                    //l.Text = "ddddd";
                    Control c = (Control)tb;

                    TextBox tbi = new TextBox();
                    Control ci = (Control)tbi;

                    separatorCell.Controls.Add(c);
                    separatorCell.Controls.Add(ci);
                    //在单元格集中增加单元格控件
                    rowSeparator.Cells.Add(separatorCell);
                    //设置GridView行的可见性
                    rowSeparator.Visible = true;
                    //在GridView中的相应行插入行
                    GridView1.Controls[0].Controls.AddAt(index + 2, rowSeparator);
                    //判断当前按钮点了几次了 同一个按钮点击第一次是添加下面的一行,点击第二次死隐藏当前添加的行
                    //ViewState["flat"] 用于标记当前点了几行
                    if (ViewState["flat"] != null)
                    {
                        if (ViewState["flat"].ToString().Trim().Equals(e.CommandArgument.ToString()))
                        {
                            rowSeparator.Visible = false;
                            ViewState["flat"] = null;
                        }
                        else ViewState["flat"] = e.CommandArgument.ToString();
                    }
                    else
                        ViewState["flat"] = e.CommandArgument.ToString();


                    // 注意: ViewState["flat}=null; 在pageLoad 事件中要先创建

            }

        }

  • 相关阅读:
    [转] linux下查看文件编码及修改编码
    offset Dimensions 详解
    style属性
    Using NodeLists
    Element Children
    Node、Document关系的探究
    Document、HTMLDocument关系的探究
    BOM Summary P268-P269
    Intervals and Timeouts
    Window Position
  • 原文地址:https://www.cnblogs.com/wuhuisheng/p/1981174.html
Copyright © 2020-2023  润新知