簡體   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