C# 如何清除GridView中的数据?
我在清除Gridview中的数据时遇到问题。我遵循了关于这个问题的其他问题中给出的所有示例,但我的Gridview并不清楚。当我第二次搜索时,它只会添加到当前的Gridview数据中。我是不是用错了方法 例如,我已经通过使用按钮搜索用户来填充我的GridView。它将向gridview中添加6个数据。当我想搜索另一个用户时,它不会首先清除数据并添加数据,而是将当前gridview中的当前数据叠加在一起,总共给我12个数据C# 如何清除GridView中的数据?,c#,asp.net,gridview,C#,Asp.net,Gridview,我在清除Gridview中的数据时遇到问题。我遵循了关于这个问题的其他问题中给出的所有示例,但我的Gridview并不清楚。当我第二次搜索时,它只会添加到当前的Gridview数据中。我是不是用错了方法 例如,我已经通过使用按钮搜索用户来填充我的GridView。它将向gridview中添加6个数据。当我想搜索另一个用户时,它不会首先清除数据并添加数据,而是将当前gridview中的当前数据叠加在一起,总共给我12个数据 public partial class Update_User_Sche
public partial class Update_User_Schedule : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[5] { new DataColumn("Test Name"), new DataColumn("Duration"), new DataColumn("Start Date"), new DataColumn("End Date"), new DataColumn("Limit") });
ViewState["Patient"] = dt;
this.BindGrid();
}
}
protected void BindGrid()
{
GridView1.DataSource = (DataTable)ViewState["Patient"];
GridView1.DataBind();
}
protected void btnUser_Click(object sender, EventArgs e)
{
GridView1.DataSource = null;
GridView1.DataBind();
int User_ID = 0, TS_IDstr = 0, Test_ID = 0, Duration = 0, Limit = 0;
string Test_Name = "";
string Name = cmbName.Text;
string start = "", end = "";
List<int> TS_ID = new List<int>();
SqlConnection myConn = new SqlConnection("Data Source=localhost;" + "Initial Catalog=IBBTS_DB; Integrated Security =SSPI");
SqlCommand retrieveUser_IDCmd = new SqlCommand("SELECT User_ID FROM Patient where Name ='" + Name + "' ;", myConn);
myConn.Open();
SqlDataReader reader = retrieveUser_IDCmd.ExecuteReader();
while (reader.Read())
{
User_ID = (Convert.ToInt32(reader.GetValue(0).ToString()));
}
reader.Close();
SqlCommand retrieveTS_IDCmd = new SqlCommand("SELECT TS_ID FROM testSet where User_ID ='" + User_ID + "' ;", myConn);
SqlDataReader reader2 = retrieveTS_IDCmd.ExecuteReader();
while (reader2.Read())
{
TS_ID.Add(Convert.ToInt32(reader2.GetValue(0).ToString()));
}
reader2.Close();
foreach (int element in TS_ID)
{
TS_IDstr = element;
SqlCommand retrieveTest_IDCmd = new SqlCommand("SELECT Test_ID FROM testSet where TS_ID ='" + TS_IDstr + "' ;", myConn);
SqlDataReader reader3 = retrieveTest_IDCmd.ExecuteReader();
while (reader3.Read())
{
Test_ID = (Convert.ToInt32(reader3.GetValue(0).ToString()));
}
reader3.Close();
SqlCommand retrieveTest_NameCmd = new SqlCommand("SELECT Test_Name FROM Test where Test_ID ='" + Test_ID + "' ;", myConn);
SqlDataReader reader4 = retrieveTest_NameCmd.ExecuteReader();
while (reader4.Read())
{
Test_Name = (reader4.GetValue(0).ToString());
}
reader4.Close();
SqlCommand retrieveDurationCmd = new SqlCommand("SELECT Duration FROM testSet where TS_ID ='" + TS_IDstr + "' ;", myConn);
SqlDataReader reader5 = retrieveDurationCmd.ExecuteReader();
while (reader5.Read())
{
Duration = (Convert.ToInt32(reader5.GetValue(0).ToString()));
}
reader5.Close();
SqlCommand retrieveStart_DateCmd = new SqlCommand("SELECT startDate FROM testSet where TS_ID ='" + TS_IDstr + "' ;", myConn);
SqlDataReader reader6 = retrieveStart_DateCmd.ExecuteReader();
while (reader6.Read())
{
start = (reader6.GetValue(0).ToString());
}
reader6.Close();
SqlCommand retrieveEnd_DateCmd = new SqlCommand("SELECT endDate FROM testSet where TS_ID ='" + TS_IDstr + "' ;", myConn);
SqlDataReader reader7 = retrieveEnd_DateCmd.ExecuteReader();
while (reader7.Read())
{
end = (reader7.GetValue(0).ToString());
}
reader7.Close();
SqlCommand retrieveLimitCmd = new SqlCommand("SELECT Limit FROM testSet where TS_ID ='" + TS_IDstr + "' ;", myConn);
SqlDataReader reader8 = retrieveLimitCmd.ExecuteReader();
while (reader8.Read())
{
Limit = (Convert.ToInt32(reader8.GetValue(0).ToString()));
}
reader8.Close();
DataTable dt = (DataTable)ViewState["Patient"];
dt.Rows.Add(Test_Name, Duration,start, end, Limit);
ViewState["Patient"] = dt;
this.BindGrid();
}
}
}
公共部分类更新\u用户\u计划:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!this.IsPostBack)
{
DataTable dt=新的DataTable();
AddRange(new DataColumn[5]{new DataColumn(“测试名称”)、new DataColumn(“持续时间”)、new DataColumn(“开始日期”)、new DataColumn(“结束日期”)、new DataColumn(“限制”)};
ViewState[“患者”]=dt;
这个.BindGrid();
}
}
受保护的void BindGrid()
{
GridView1.DataSource=(DataTable)ViewState[“患者”];
GridView1.DataBind();
}
受保护的无效用户单击(对象发送者,事件参数e)
{
GridView1.DataSource=null;
GridView1.DataBind();
int User_ID=0,TS_IDstr=0,Test_ID=0,Duration=0,Limit=0;
字符串测试_Name=“”;
字符串名称=cmbName.Text;
字符串start=“”,end=“”;
列表TS_ID=新列表();
SqlConnection myConn=newsqlconnection(“数据源=localhost;“+”初始目录=IBBTS_DB;集成安全=SSPI”);
SqlCommand retrieveUser_IDCmd=new SqlCommand(“从患者中选择用户ID,其中姓名=”“+Name+”;”,myConn);
myConn.Open();
SqlDataReader=retrieveUser_IDCmd.ExecuteReader();
while(reader.Read())
{
User_ID=(Convert.ToInt32(reader.GetValue(0.ToString());
}
reader.Close();
SqlCommand retrieveTS_IDCmd=newsqlcommand(“从testSet中选择TS_ID,其中User_ID='”+User_ID+“;”,myConn);
SqlDataReader reader2=retrieveTS_IDCmd.ExecuteReader();
while(reader2.Read())
{
TS_ID.Add(Convert.ToInt32(reader2.GetValue(0.ToString());
}
reader2.Close();
foreach(TS_ID中的int元素)
{
TS_IDstr=元素;
SqlCommand retrieveTest_IDCmd=new SqlCommand(“从testSet中选择Test_ID,其中TS_ID='”+TS_IDstr+“;”,myConn);
SqlDataReader reader3=retrieveTest_IDCmd.ExecuteReader();
while(reader3.Read())
{
Test_ID=(Convert.ToInt32(reader3.GetValue(0.ToString());
}
reader3.Close();
SqlCommand retrieveTest_NameCmd=newsqlcommand(“从Test中选择Test_Name,其中Test_ID='”+Test_ID+“;”,myConn);
SqlDataReader reader4=retrieveTest_NameCmd.ExecuteReader();
while(reader4.Read())
{
Test_Name=(reader4.GetValue(0.ToString());
}
reader4.Close();
SqlCommand retrieveDurationCmd=new SqlCommand(“从测试集中选择持续时间,其中TS_ID='”+TS_IDstr+“;”,myConn);
SqlDataReader reader5=retrieveDurationCmd.ExecuteReader();
while(reader5.Read())
{
Duration=(Convert.ToInt32(reader5.GetValue(0.ToString()));
}
reader5.Close();
SqlCommand retrieveStart_DateCmd=new SqlCommand(“从testSet中选择startDate,其中TS_ID='”+TS_IDstr+“;”,myConn);
SqlDataReader reader6=retrieveStart_DateCmd.ExecuteReader();
while(reader6.Read())
{
start=(reader6.GetValue(0.ToString());
}
reader6.Close();
SqlCommand retrieveEnd_DateCmd=new SqlCommand(“从测试集中选择endDate,其中TS_ID='”+TS_IDstr+“;”,myConn);
SqlDataReader reader7=retrieveEnd_DateCmd.ExecuteReader();
while(reader7.Read())
{
end=(reader7.GetValue(0.ToString());
}
reader7.Close();
SqlCommand retrieveLimitCmd=newsqlcommand(“从testSet中选择限制,其中TS_ID='”+TS_IDstr+“;”,myConn);
SqlDataReader reader8=retrieveLimitCmd.ExecuteReader();
while(reader8.Read())
{
Limit=(Convert.ToInt32(reader8.GetValue(0.ToString()));
}
reader8.Close();
DataTable dt=(DataTable)视图状态[“患者”];
添加(测试名称、持续时间、开始、结束、限制);
ViewState[“患者”]=dt;
这个.BindGrid();
}
}
}
DataTable dt=(DataTable)视图状态[“患者”];添加(测试名称、持续时间、开始、结束、限制);您需要清除viewstate中的数据,因为您只是在此处添加结果。其中代码为[GridView1.DataSource=null;GridView1.DataBind();]放置以下DataTable dt=new DataTable();AddRange(new DataColumn[5]{new DataColumn(“测试名称”)、new DataColumn(“持续时间”)、new DataColumn(“开始日期”)、new DataColumn(“结束日期”)、new DataColumn(“限制”)};ViewState[“患者”]=dt;否则,您只需填充一个现有表,或者将表创建分离到一个新方法中,并在页面加载时以及在向表中重新添加记录之前调用。您还可以在方法的开头调用以清除数据表。像这样受保护的void btuser_Click(objectsender,EventArgs e){if(ViewState[“Patient”]!=null){DataTable dt=(DataTable)ViewState[“Patient”];dt.Clear();ViewState[“Patient”]=dt;}@lairdstrick非常感谢。第二个是