我尝试使用以下代码来创建基于 sqldatasource 的动态 gridview。我遇到的问题是我使用的 sqldatasource.ID 基于 SessionID。现在,当我在 page_load 上调用它时,一切似乎都正常,但是如果我刷新页面它不起作用,现在我知道为什么了,因为我在 page_load 中有一个 if 语句,它检查是否存在回发,如果不存在然后它可以很好地使用 getDefaultGrid() 函数加载,但是如果它是回发,我尝试重新加载 getDefaultGrid() 函数但是这次尝试传递 sqldatasource ID 它不起作用,或者我只是在做它错了。很感谢任何形式的帮助!!
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
getDefaultGrid(getSessionID(), startGrid());
}
else
{
getDefaultGrid(getSessionID(), (SqlDataSource)getSessionID());
}
}
protected void getDefaultGrid(string sessionID, SqlDataSource ds)
{
ds.SelectCommand = "SELECT * FROM [temp] WHERE SessNum = @SESSNUM";
ds.SelectParameters.Add("SESSNUM", sessionID);
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected SqlDataSource startGrid()
{
string ConnString = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
String currentSessionID = getSessionID();
SqlDataSource sqlDS = new SqlDataSource();
//sqlDS.ConnectionString = "unionConnectionString";
sqlDS.ConnectionString = ConnString;
sqlDS.ID = getSessionID();
sqlDS.InsertCommand = "INSERT INTO [temp] ([SessNum], [Row], [Size], [Description], [Quantity], [Unit], [Duration], [DurationType], [Amount])VALUES (@SESSNUM, @ROW, @SIZE, @DESCRIPTION, @QUANTITY, @UNIT, @DURATION, @DURATIONTYPE, @AMOUNT)";
sqlDS.InsertParameters.Add("SESSNUM", currentSessionID.ToString());
sqlDS.InsertParameters.Add("ROW", "1");
sqlDS.InsertParameters.Add("SIZE", "Size");
sqlDS.InsertParameters.Add("DESCRIPTION", "Description");
sqlDS.InsertParameters.Add("QUANTITY", "Quantity");
sqlDS.InsertParameters.Add("UNIT", "Unit");
sqlDS.InsertParameters.Add("DURATION", "Duration");
sqlDS.InsertParameters.Add("DURATIONTYPE", "DurationType");
sqlDS.InsertParameters.Add("AMOUNT", "Amount");
sqlDS.Insert();
return sqlDS;
}
protected string getSessionID()
{
string session = HttpContext.Current.Session.SessionID;
return session;
}