繁体   English   中英

如何删除GridView的第一行

[英]How to delete GridView's first row

我有一个 gridview 在按下 2 个按钮时填充。

                <asp:GridView ID="GridView1" runat="server"
                    ShowFooter="True" AutoGenerateColumns="False" Width="100%" Height="100%" HeaderStyle-BackColor="#3F51B5" HeaderStyle-ForeColor="White" BorderWidth="1px">
                    <Columns>
                        <asp:BoundField DataField="RowNumber" HeaderText="Nr.">
                            <ControlStyle BorderStyle="None" />
                        </asp:BoundField>
                        <asp:BoundField DataField="Message" HeaderText="Message">
                            <ControlStyle BorderStyle="None" />
                        </asp:BoundField>
                        <asp:BoundField DataField="Data" HeaderText="Data">
                            <ControlStyle BorderStyle="None" />
                        </asp:BoundField>
                        <asp:BoundField DataField="ClasaMesaj" HeaderText="ClasaMesaj">
                            <ControlStyle BorderStyle="None" />
                        </asp:BoundField>
                    </Columns>
                </asp:GridView>

使用FirstGridViewRow() function,我使用新行创建GridView1 PageLoad中调用FirstGridViewRow()

   protected void Page_Load(object sender, EventArgs e)
    {
        if (this.IsPostBack)
            return;
        FirstGridViewRow();
    }

    private void FirstGridViewRow()
    {
        DataTable dt = new DataTable();
        DataRow dr = null;
        dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
        dt.Columns.Add(new DataColumn("Message", typeof(string)));
        dt.Columns.Add(new DataColumn("Data", typeof(string)));
        dt.Columns.Add(new DataColumn("ClasaMesaj", typeof(string)));

        dr = dt.NewRow();
        dr["RowNumber"] = 1;
        dr["Message"] = "";// string.Empty;
        dr["Data"] = "";// string.Empty;
        dr["ClasaMesaj"] = 0;

        dt.Rows.Add(dr);

        //   dt.Rows.Remove(dt.Rows[0]); //I have tried like this, but no row would be added

        ViewState["CurrentTable"] = dt;
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }

单击两个按钮之一,我每次添加一个新行。

           private void AddNewRow(string s, string s1, int ClasaMesaj)
    {
        int rowIndex = 1;
        DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
        DataRow drCurrentRow = dtCurrentTable.NewRow(); // null;// dtCurrentTable.NewRow();

        for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
        {
            drCurrentRow["RowNumber"] = i+1;
            drCurrentRow[1] = s;// "s";
            drCurrentRow[2] = s1;// "s1";
            drCurrentRow[3] = ClasaMesaj;
            rowIndex++;
        }
        dtCurrentTable.Rows.Add(drCurrentRow);
        ViewState["CurrentTable"] = dtCurrentTable;
        GridView1.DataSource = dtCurrentTable;
        GridView1.DataBind();
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        clsMsg = 1;
        DateTime data = DateTime.Now;
        string dt = data.ToString();
        AddNewRow("Start", dt, clsMsg);
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        clsMsg = 2; 
        DateTime data = DateTime.Now;
        string dt = data.ToString();
        AddNewRow("Stop", dt, clsMsg);
    }

因此,当页面加载时, GridView1有 1 行(在FirstGridViewRow()中初始化的行)。 当我按下其中一个按钮时,将创建第 2 行。 我想删除已初始化的行或在按下按钮时用信息填充它。 我怎么能这样做? 我试图摆脱FirstGridViewRow()并只使用AddNewRow() ,但没有成功。

尝试这个。 我在您的代码中为您添加了删除第一行。

static bool first = true;
       private void AddNewRow(string s, string s1, int ClasaMesaj)
{
    int rowIndex = 1;
    DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
    DataRow drCurrentRow = dtCurrentTable.NewRow(); // null;// 
 dtCurrentTable.NewRow();

    for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
    {
        drCurrentRow["RowNumber"] = i+1;
        drCurrentRow[1] = s;// "s";
        drCurrentRow[2] = s1;// "s1";
        drCurrentRow[3] = ClasaMesaj;
        rowIndex++;
    }
    dtCurrentTable.Rows.Add(drCurrentRow);
    ViewState["CurrentTable"] = dtCurrentTable;




if (first == true){
dtCurrentTable.Rows.RemoveAt(0);
first = false;
}



    GridView1.DataSource = dtCurrentTable;
    GridView1.DataBind();
}

不过只是一个问题。 第一行是否只需要在第一次按下按钮时或每次都被删除?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM