Asp.net 带按钮的私有字符串的ViewState
我有一个带有Asp.net 带按钮的私有字符串的ViewState,asp.net,string,button,viewstate,rowcommand,Asp.net,String,Button,Viewstate,Rowcommand,我有一个带有Rowcommand事件的gridview,让我获取列ActivityID单元格值,并将其放入名为ActivityIDString的私有字符串中 private string ActivityIDString; // To be used in btUpdate protected void gwActivity_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.Com
Rowcommand
事件的gridview,让我获取列ActivityID单元格值,并将其放入名为ActivityIDString的私有字符串中
private string ActivityIDString; // To be used in btUpdate
protected void gwActivity_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Page") return;
GridViewRow row = ((e.CommandSource as Control).NamingContainer as GridViewRow);
string ActivityID = row.Cells[1].Text;
ActivityIDString = ActivityID;
}
当选择行时,这一切都起作用,但当我按下“btUpdate”按钮时,ActivityIDString变为NULL
protected void btUpdate_Click(object sender, EventArgs e)
{
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("sp_tblActivityUpdate", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ActivityID", ActivityIDString);
con.Open();
cmd.ExecuteNonQuery();
BindGridviewActivity();
}
}
我理解这个问题以及它变为NULL的原因,但我不知道如何解决这个问题以及在哪里使用ViewState
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["ActivityIDStringText"] = "ActivityIDString"; // <-- SHOULD I CREATE THIS?????
}
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
ViewState[“ActivityIDStringText”]=“ActivityIDString”//此方法应类似于
protected void gwActivity_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Page") return;
GridViewRow row = ((e.CommandSource as Control).NamingContainer as GridViewRow);
string ActivityID = row.Cells[1].Text;
ViewState["ActivityIDString"] = ActivityID;
}
然后在按钮方法中检索它
protected void btUpdate_Click(object sender, EventArgs e)
{
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
string ActivityIDString= Convert.ToString(ViewState["ActivityIDString"]);
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("sp_tblActivityUpdate", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ActivityID", ActivityIDString);
con.Open();
cmd.ExecuteNonQuery();
BindGridviewActivity();
}
}
您可以在此处使用会话。每当选择一行时,在会话中添加ID,并在btUpdate click事件中检索会话对象的值,然后将会话设为空
在gwActivity_RowCommand()中
在btUpdate_Click()中
您是否已将按钮绑定到gridview中?不,按钮在gridview中确定,然后您可以在方法中使用viewState请查看答案。谢谢您,这是完美的,而且很有效。这只是将viewState放置在何处的问题:)
Session["ActivityId"] += ";ActivityId";
if(Session["ActivityId"]!=null){
var ActivityIds = Session["ActivityId"].Split(';'); // For Mulitple Ids if Required
Session["ActivityId"] = null;
}