[英]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.