比如我有这个控件:
<asp:TextBox ID="txtCVRName" runat="server" CssClass="textBox"></asp:TextBox>
打开页面时,先从数据库中读取数据显示在控件中,比如读取结果是:11,则textbox里显示11,
修改后是:22 ,textbox 里删掉11输入22。
再点击保存触发onclick事件,通过update更新数据库。
但点击保存后怎么textbox.text的值还是11,而不是22
上代码,肯定是你哪里写的不对
<div> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Table ID="Table1" runat="server" HorizontalAlign="Center" Height="300px"> <asp:TableRow> <asp:TableCell> <asp:Label ID="lbSName" runat="server" Text="*标题:"></asp:Label></asp:TableCell> <asp:TableCell> <asp:TextBox ID="txtSName" runat="server" Width="500px" CssClass="textBox"></asp:TextBox></asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell> <asp:Label ID="lbSDate" runat="server" Text="*时间:"></asp:Label></asp:TableCell> <asp:TableCell> <asp:TextBox ID="txtSDate" runat="server" onclick="WdatePicker()" CssClass="textBox"></asp:TextBox></asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell> <asp:Label ID="Label1" runat="server" Text="状态:"></asp:Label></asp:TableCell> <asp:TableCell> <asp:DropDownList ID="dropSStatu" runat="server" CssClass="textBox"> <asp:ListItem>未进行</asp:ListItem> <asp:ListItem>未完成</asp:ListItem> <asp:ListItem>已完成</asp:ListItem> </asp:DropDownList> </asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell ColumnSpan="2"> <asp:Label ID="lbSContent" runat="server" Text="内容:"></asp:Label></asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell ColumnSpan="2"> <asp:TextBox ID="txtSContent" runat="server" TextMode="MultiLine" CssClass="textBox" Width="600px" Height="200px"></asp:TextBox></asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell> <asp:Button ID="Button1" runat="server" Text="修改" CssClass="button" OnClick="Button1_Click"/></asp:TableCell> <asp:TableCell> <asp:Button ID="Button2" runat="server" Text="取消" CssClass="button" OnClick="Button2_Click" Visible="false"/></asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell> <asp:Label ID="lbErr" runat="server" Text=""></asp:Label> </asp:TableCell> </asp:TableRow> </asp:Table> </ContentTemplate> </asp:UpdatePanel> </div>
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 8 namespace Sales_baseCRMSys.View.Home 9 { 10 public partial class ScheduleInfo : System.Web.UI.Page 11 { 12 protected void Page_Load(object sender, EventArgs e) 13 { 14 if (Convert.ToInt32(Request.QueryString["id"]) > 0) 15 { 16 ShowInfo(Convert.ToInt64(Request.QueryString["id"])); 17 } 18 else if (Request.QueryString["id"] == null) 19 txtSName.Text = "null"; 20 else if (Request.QueryString["id"] == "") 21 txtSName.Text = "空"; 22 ToFalse(); 23 } 24 25 protected void Button1_Click(object sender, EventArgs e) 26 { 27 if (Button1.Text == "修改") 28 { 29 ToTrue(); 30 Button1.Text = "保存"; 31 Button2.Visible = true; 32 } 33 else 34 { 35 SaveInfo(); 36 } 37 } 38 39 protected void Button2_Click(object sender, EventArgs e) 40 { 41 Response.Redirect("ScheduleInfo.aspx",false); 42 } 43 44 public void ShowInfo(long sid) 45 { 46 DBUnity.ScheduleDAL schDAL = new DBUnity.ScheduleDAL(); 47 Models.Schedule sch = new Models.Schedule(); 48 sch = schDAL.SelectOutId(sid); 49 50 txtSContent.Text = sch.SContent; 51 txtSDate.Text = Convert.ToString(sch.SDate); 52 txtSName.Text = sch.SName; 53 dropSStatu.SelectedItem.Text = sch.SStatu; 54 } 55 public void SaveInfo() 56 { 57 Models.Schedule sch = new Models.Schedule(); 58 sch.SContent = txtSContent.Text; 59 sch.SDate = Convert.ToDateTime(txtSDate.Text); 60 sch.SStatu = dropSStatu.SelectedItem.Text; 61 sch.SName = txtSName.Text; 62 63 sch.SId = Convert.ToInt64(Request.QueryString["id"]); 64 65 DBUnity.ScheduleDAL schDAL = new DBUnity.ScheduleDAL(); 66 int i = schDAL.Update(sch); 67 if (i > 0) 68 { 69 lbErr.Text = "修改成功"; 70 } 71 else 72 { 73 lbErr.Text = "修改失败"; 74 } 75 } 76 public void ToFalse() 77 { 78 txtSContent.Enabled = false; 79 txtSDate.Enabled = false; 80 txtSName.Enabled = false; 81 dropSStatu.Enabled = false; 82 } 83 public void ToTrue() 84 { 85 txtSContent.Enabled = true; 86 txtSDate.Enabled = true; 87 txtSName.Enabled = true; 88 dropSStatu.Enabled = true; 89 } 90 } 91 }
@FireSky.Yang: 哪个是你说的那个不变的?
@羽商宫: 都不变,改哪个都不变
补充说明,这个是打开一条日程信息,进入到这个页面,并显示对应信息,
ToFals()是让控件禁用,ToTrue()相反。
点击按钮判断:
如果 text==“修改”,则ToTrue();text = “保存”;
如果text == “保存”,则SaveInfo();saveInfo()里将所有控件值赋给Schedule对象,把对象传给ScheduleDAL对象Update(Scedule s);返回一个0 或1的int类型,如果是0,则保存失败,如果是1则保存成功。
@FireSky.Yang: 传过来的时候就没有改变是么?前台浏览器那边看一下传过来的是什么。
@羽商宫: 现在的情况是:
”saveInfo()里将所有控件值赋给Schedule对象“
修改后,按保存按钮这里的控件并没有获取修改后的值是原来的值而不是修改后的值,所以赋给Schedule对象的值也是原来的值,
@羽商宫: 每次按按钮都会刷新页面,是不是刷新页面重新调用load方法影响的。
@羽商宫: 是的,传过来的时候就没有改变。前台浏览器那边看一下传过来的是修改之前的值。
@FireSky.Yang: 是不是你的updatepanel导致的,去掉你再试试
@羽商宫: 去掉也这样,我试过了
@FireSky.Yang: 我知道了,你没有写ispostback
@FireSky.Yang: 每回都会调用showinfo,所以值永远不变
@羽商宫:那怎么办呢,我的所有页面都这样
@FireSky.Yang:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Convert.ToInt32(Request.QueryString["id"]) > 0) { ShowInfo(Convert.ToInt64(Request.QueryString["id"])); } else if (Request.QueryString["id"] == null) txtSName.Text = "null"; else if (Request.QueryString["id"] == "") txtSName.Text = "空"; ToFalse(); } }
@羽商宫: 哦,我试试看,非常感谢!
@羽商宫: 果然好了,哎呀,我刚自学,没想到IsPostBack,谢谢了!~thanks!