当前位置:编程学习 > C#/ASP.NET >>

Datagird里更新数据的问题

在页面上我点击update后 后台显示只得到了旧的数据没有得到修改后的数据。看了很多帖子都没解决,求高手帮助,具体代码如下:
string brand = ((TextBox)e.Item.Cells[1].Controls[0]).Text;//这里的brand应该是得到我修改后的数据,但结果确是旧的数据
是页面上除了需要设置update的点击事件还需要再做什么设置吗?


--------------------编程问答-------------------- 修改之后刷新一次 --------------------编程问答-------------------- 不是这个意思,我的修改没有成功,后来没有得到修改后的数据,一直都是修改前的数据 --------------------编程问答-------------------- 意思是没有获取到数据吗??? --------------------编程问答-------------------- 恩 就是这个意思.....我查询了很多帖子,
string brand = ((TextBox)e.Item.Cells[1].Controls[0]).Text
就是用这个来得到我修改后的数据,然后把brand更新到数据库里。这步可以了,只是我得不到新的数据而已~
--------------------编程问答-------------------- 例如 string lid = ((Label)DataGrid1.Items[e.Item.ItemIndex].Cells[1].FindControl("lmid")).Text --------------------编程问答-------------------- string brand = “update ..xx=((TextBox)e.Item.Cells[1].Controls[0]).Text where.."
在执行一次连接数据库更新! --------------------编程问答-------------------- LZ你绑定GridView的代码是写在ispostback判断里面的吗? --------------------编程问答-------------------- string brand = ((TextBox)e.Item.Cells[1].FindControl("txtbox1")).Text
--------------------编程问答-------------------- 7楼:我用的是datagird....
6楼:得不到新的数据,我再更新都是更新的旧的数据啊..
5楼:我没有用findcontrol,因为我的页面是这样的:
 <Columns>
      <asp:BoundColumn HeaderText="id" DataField="id"   Visible="false"></asp:BoundColumn>                            
      <asp:BoundColumn HeaderText="brand" DataField="brand" ></asp:BoundColumn>   
      ....
      
--------------------编程问答-------------------- string brand = ((TextBox)e.Item.Cells[1].FindControl("txtbox1")).Text 
这个显然不可以,我的页面没有设置控件,也没有设置id,“txtbox1”肯定找不到东西的。。

7楼:ispostback里已经绑定了... --------------------编程问答-------------------- 同意楼上的做法
你使用的模板列,你的txt的ID,你知道么? --------------------编程问答-------------------- int id =(int)MyDataGrid.DataKeys[(int)e.Item.ItemIndex]//得到页面里的ID

测试结果也是对的。。brand也会根据id不同而不同,但仍然是旧的数据,我更改的没有得到.... --------------------编程问答-------------------- 你保证新数据确实修改了数据库,最后在从新绑定一下Datagird --------------------编程问答-------------------- page_load事件里绑定datagird,必须要加上if(!isPostBack){} --------------------编程问答-------------------- 13楼:新的数据没有得到,得到是页面上的旧数据啊。。所以数据库自然也没有改。
14楼:在(!isPostBack){}里的。。。
我几乎就是仿照msdn里的代码写的 但还是更新不了。。。- -! --------------------编程问答--------------------

string ClassName = ((TextBox)(dgList.Items[e.Item.ItemIndex].Cells[0].FindControl("txtClassName"))).Text


注意这里Cells[0]跟FindControl 控件相对应 ,cells是从0开始的 --------------------编程问答--------------------   if (!IsPostBack)
        {
            Session["sqls"] = "";
            this.BindGrid();
        }
.........
 protected void mydatagrid_update(object sender, DataGridCommandEventArgs e)
        {
            int id =(int)MyDataGrid.DataKeys[(int)e.Item.ItemIndex];
            
            String brand = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
.........

页面:
   <asp:datagrid id="MyDataGrid" runat="server" AutoGenerateColumns="False"
    datakeyfield="id" oneditcommand="mydatagrid_edit" onupdatecommand="mydatagrid_update"
     .....

 <Columns>
                            <asp:BoundColumn HeaderText="id" DataField="id" Visible="false"></asp:BoundColumn>                            
                            <asp:BoundColumn HeaderText="brand" DataField="brand" ></asp:BoundColumn>  
..........


代码基本是这样,就是得不到更新的brand,得到的却是旧的brand      --------------------编程问答-------------------- 奇怪。。。 --------------------编程问答-------------------- 前台、后台代码全贴! --------------------编程问答-------------------- 修改之后 重新bind --------------------编程问答-------------------- 朋友,前两天我也碰到了类似问题,也是得不到更新后的数据,我的错误出在我忽略了“if(!Page.IsPostBack)
{
account=Request.QueryString["name"];
this.DataBinds();
}”这句判断,不知道你的具体错误在哪里,应该差不多也在这里了,如果你忽略了这句的话,页面每次刷新后都会重新绑定数据,所以你就只能得到旧的数据了 --------------------编程问答-------------------- LZ把绑定GridView的代码放到ispostback的判断里面去,判断在不是回传页的时候才走绑定的代码 --------------------编程问答-------------------- 原来没有控件,哎
那就是string brand = e.Item.Cells[1].Text 
如果有控件也是
string brand = ((TextBox)e.Item.Cells[1].Controls[1]).Text 

--------------------编程问答-------------------- 注意 EditCommand这个需要一个事件处理如下代码:
       protected void DataGrid1_EditCommand(object source, DataGridCommandEventArgs e)
        {
            this.DataGrid1.EditItemIndex = e.Item.ItemIndex;
            this.DataBindToDataGrid();
        }
然后在事件DataGrid1_UpdateCommand里面,执行你的代码去取值
string brand = ((TextBox)e.Item.Cells[1].Controls[0]).Text;之前加一句
--------------------编程问答-------------------- 更新后执行下面代码:
Datagird1.DataBind() --------------------编程问答-------------------- 将formload里 绑定datagrid数据的语句 用 if(!ispostback) 套上
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,