我想知道是否可以基于变量动态创建具有不同名称的不同会话变量?
我试图以这种方式完成但似乎不喜欢我的变量
protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
LinkButton lb = (LinkButton)e.Row.FindControl("MyLinkButton");
Label options = (Label)e.Row.FindControl("MyLabel");
if (e.Row.RowType == DataControlRowType.DataRoow)
{
Session[lb] = options;
//I was trying to use this to create Session Variables with Different Names Dynamically
}
}
所以我的最终结果是,我将有以下会话而不必手动创建所有这些会议。
Session["Value"] = "MyOption"
Session["Value1"] = "MyOption1"
Session["Value2"] = "MyOption2"
Session["Value3"] = "MyOption3"
答案 0 :(得分:0)
你正在向后做。由于您在RowDataBound事件中,显然您是数据绑定。因此,请将数据保存在Session["DataSource"]
或类似的内容中,而不是在逐行绑定数据集时重新创建数据集。
我建议使用ViewState,因为它仅对该页面有效。如果您不打算在该页面之外使用数据,则没有理由将其添加到Session。
你在使用会话数据是什么?
答案 1 :(得分:0)
您可以创建部分列表。对于exaple:
List<string> sections=GetSectionsList();
列表中的每个项目都会创建一个Session变量并填充状态,如下所示:
foreach(string section in sections)
{
Session[section] = GetSectionStatus(section);
}
然后每个部分的onload检查部分会话值并相应地采取行动。但是有一条建议在这种情况下使用会话,只要这些部分的数量要少得多,比如说2到5,否则每个部分加载的db调用会更好。