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