日期:2014-05-18  浏览次数:20459 次

在页面上对TextBox的值进行的修改,传回数据库时不成功
利用IntiData方法对页面进行初始化
C# code
public void InitData()
    {
        int activityID = Convert.ToInt32(Request.QueryString["activity_id"]);
        BusinessLogical.Activity activity = new BusinessLogical.Activity();
        activity.LoadData(activityID);//从数据库中加载数据
        //初始化文本框中的值
        TextBoxTitle.Text = activity.Info_Title;
        TextBoxAddress.Text = activity.Info_Position;
        TextBoxContent.Text = activity.Info_Content;
    }

在页面中修改文本框中的值。
然后通过通过鼠标单击事件对返回对数据库的修改
C# code
 protected void ButtonUpdate_Click(object sender, EventArgs e)
    {
        BusinessLogical.Activity activity = new BusinessLogical.Activity();
        activity.Info_ID = Convert.ToInt32(Request.QueryString["activity_id"]);
        
        Hashtable ht = new Hashtable();//新建哈希表并将文本框中修改后的值添加进哈希表中
        ht.Add("Info_Title", SqlStringFormat.GetQuotedString(TextBoxTitle.Text));
        ht.Add("Info_Address", SqlStringFormat.GetQuotedString(TextBoxAddress.Text));
        ht.Add("Info_Content", SqlStringFormat.GetQuotedString(TextBoxContent.Text));
        
        activity.Update(ht);
//对数据库进行更新
但是修改并没有完成。数据库和文本框中显示的依然是原来的值。
我进行了如下测试
 
C# code
 //测试
        foreach (DictionaryEntry h in ht)
        {
            Response.Write(h.Key.ToString()+h.Value.ToString());
        }


结果输出的是文本框中初始化时的值,也就是说对TextBoxTitle.text,TextBoxAddress.Text,TextBoxContent.Text的修改后的值并没有被添加进哈希表ht中

这是什么原因呢?



------解决方案--------------------
C# code

public void InitData()
    {

       if (!IsPostBack)
       {
        int activityID = Convert.ToInt32(Request.QueryString["activity_id"]);
        BusinessLogical.Activity activity = new BusinessLogical.Activity();
        activity.LoadData(activityID);//从数据库中加载数据
        //初始化文本框中的值
        TextBoxTitle.Text = activity.Info_Title;
        TextBoxAddress.Text = activity.Info_Position;
        TextBoxContent.Text = activity.Info_Content;
    }

}

------解决方案--------------------
是不是PageLoad中调用了InitData方法,有没有用IsPostBack做一下限制,只第一次加载时调用InitData
------解决方案--------------------
你的Init方法放在if(!IsPostBack)里了么?
页面执行顺序是按了按钮之后先Page_Load,然后再是Click事件所以你的Init又重新给TextBox赋值了 取到的也是以前的值
------解决方案--------------------
调试看一下你的test字符串直接放在数据库里执行能否成功更新数据,如果不行,就需要对sql语句进行修正。
------解决方案--------------------
而且要判断if(!IsPostBack)
------解决方案--------------------
直接用你的SQL语句去数据库里面执行看看