我在gridview中有一个超链接字段。我想在会话期间将所有单击的值存储在该超链接字段的哈希表中。
protected partial class User : System.Web.UI.Page
{
Hashtable htable = new Hashtable();
int hTableIndex = 0;
// ...
}
在页面加载功能中。
if(Session["test"] != null)`
{
for(int i = 0 ; i gvUserStatus.Rows.Count ; i++)
Hashtable tempHashTable = new Hashtable();
tempHashTable = Session["test"] as Hashtable;
if(tempHashTable.Contains(someValue))
{
//Do Something
}
}
在链接点击事件中:
protected void userID_Click(object sender, EventArgs e)
{
//logic to get the ClickedValue
if(!htable.Contains(ClickedValue))
{
htable.Add(hTableIndex++,ClickedValue);
}
Session["test"] = htable;
}
我正在使用上面的代码,但是在我的哈希表中,只存储了最后点击的值,我该怎么做才能获得整个用户会话的所有先前值?
答案 0 :(得分:1)
hTableIndex
将在postback
上失去价值。您还需要将其存储在Session
中(如果您在其他网页上不需要它,则只需ViewState
)
因此,您需要在Page_Load
事件中添加此内容:
if (ViewState["hTableIndex"] == null)
ViewState["hTableIndex"] = hTableIndex;
并在您的链接点击事件userID_Click
protected void userID_Click(object sender, EventArgs e)
{
//logic to get the ClickedValue
if(!htable.Contains(ClickedValue))
{
var hTableIndex = Convert.ToInt32(ViewState["hTableIndex"]);
htable.Add(hTableIndex++,ClickedValue);
}
Session["test"] = htable;
}
如果有效,请告诉我。 Haven尚未对其进行测试。
答案 1 :(得分:0)
问题在你的hTableIndex中,在重新加载页面时总是指向0,你还需要把它放在会话中,以便下次你可以获得hTableIndex的最大值并在该索引处添加新链接