我写了这么一些代码
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
dt=LoadData();
if(!IsPostBack)
{
temp="";
DataRow dr;
for(int i=0;i<6;i++)
{
dr=dt.NewRow();
dr["Num"]=i;
dr["Name"]="书名"+i.ToString();
dr["DtTm"]=DateTime.Now.ToShortTimeString();
if((i%2)!=0)
{
dr["Assembly"]=true;
}
else
{
dr["Assembly"]=false;
} dr["Price"]=1.11*i; dt.Rows.Add(dr);
}
DataGrid1.DataSource=dt.DefaultView;
DataGrid1.DataBind();
}
if(Session["dt"]==null)
{
Session["dt"]=dt;
}
else
{
dt=(DataTable)Session["dt"];
}
/*if(temp=="addevent")
{
DataGridItem item=DataGrid1.SelectedItem;
TextBox NumBox=(TextBox)Convert.ChangeType(item.Cells[0].FindControl("NumBox"),typeof(TextBox));
NumBox.TextChanged+=new System.EventHandler(this.TextBox1_TextChanged);
}*/
}
private void TextBox1_TextChanged(object sender, System.EventArgs e)
{
Response.Write("aaaaaa");
} private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="Select")
{
DataGrid1.EditItemIndex=e.Item.ItemIndex;
DataGrid1.DataSource=dt.DefaultView;
DataGrid1.DataBind();
//temp="addevent";
//TextBox NumBox=(TextBox)Convert.ChangeType(e.Item.Cells[0].FindControl("NumBox"),typeof(TextBox));
//NumBox.TextChanged+=new System.EventHandler(this.TextBox1_TextChanged); }
}
private void DataGrid1_PreRender(object sender, System.EventArgs e)
{
if(DataGrid1.EditItemIndex!=-1)
{
DataGridItem item=DataGrid1.SelectedItem;
TextBox NumBox=(TextBox)Convert.ChangeType(item.Cells[0].FindControl("NumBox"),typeof(TextBox));
//NumBox.Attributes.Add("TextChanged","TextBox1_TextChanged");
NumBox.TextChanged+=new System.EventHandler(this.TextBox1_TextChanged);
//temp="";
}
}
目的是为了在datagrid选中一行之后该行变成编辑模式,行中的label变成textbox,我现在想在textbox里添加事件,现在的问题是事件是可以添加进去,但是reload一次之后,事件又没了,请问该如何解决?
事件添加流程是这样的:
第一次加载页面->选择一行->该行变成编辑模式(ItemCommand事件触发)->给textbox添加事件(preRender事件触发)->textbox输入内容,回车->page reload,textbox事件丢失,web上没反应!