首页 新闻 会员 周边

关于获取GridView编辑状态下单元格的内容

0
悬赏园豆:100 [待解决问题]

gridview的样式如下  

任务名称 源路径 目标路径 频率 后缀名 地市名称 

    1            C:\      D:\       每天   ini        呼市       编辑

一个问题是:

当某行处于编辑状态时,我想更改某个单元格的内容,然后把更改后的单元格的内容打印出来,但是始终取不到更改后的内容,总还是更改前的内容,请问是怎么回事?

代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        getdata();
    }
    public void getdata()
    {
        SqlConnection cn = new SqlConnection(@"Data Source=mobile;Initial Catalog=Maintain;Persist Security Info=True;User ID=sa;Password=123456");
        SqlCommand cmd = new SqlCommand("select * from BusinessConfig", cn);
         DataSet ds = new DataSet();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(ds, "BusinessConfig");
        GridView1.DataSource = ds.Tables[0].DefaultView;
        GridView1.DataBind();
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        getdata();
    }
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        string name = ((TextBox)GridView1.Rows[e.RowIndex].Cells[5].Controls[0]).Text.ToString();
        Response.Write(name);

    }
    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex = -1;
        getdata();
    }
}

电脑者的主页 电脑者 | 初学一级 | 园豆:2
提问于:2010-12-17 10:20
< >
分享
所有回答(3)
0

string name = ((TextBox)GridView1.Rows[e.RowIndex].Cells[5].FindControl(“你的编辑的时候的textbox的id”).Text.ToString();

你这样试试看,你的controls【0】你怎么就知道是你的那个文本框?

顾晓北 | 园豆:10844 (专家六级) | 2010-12-17 10:36
我现在就想改地市名称的值,怎么做
支持(0) 反对(0) 电脑者 | 园豆:2 (初学一级) | 2010-12-17 10:43
按我上面的试试看啊。。。
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2010-12-17 10:49
就是不行啊,你自己也可以试试,确实不行的
支持(0) 反对(0) 电脑者 | 园豆:2 (初学一级) | 2010-12-17 10:54
不明白你为什么还没update就直接去输出,你现在的效果是什么?点击“编辑”按钮就输出了?那你这样试试看,在你的updating事件里面不要操作,把你的那个文本框的值存到viewstate或者session里面,然后在updated事件里面输出viewstate或者session里面的东西,你这样感觉很混乱,如果想学的话先看看基础教程吧。 http://blog.csdn.net/zhan198271/archive/2008/04/08/2259352.aspx
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2010-12-17 11:03
晕,就这么点小问题难道就难住这么多的高手么?
支持(0) 反对(0) 电脑者 | 园豆:2 (初学一级) | 2010-12-17 11:03
不是你晕,是应该高手(其实我不是高手)晕,你这个根本生命周期和asp.net的原理都不明白。。。
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2010-12-17 11:08
我这个程序不是想达到什么应用目的,只是想测试一下如何能获取到处于编辑状态的某行的某个单元格的被更改后的内容。操作步骤是想点击编辑后,再更改某个单元格的内容,然后点击更新按钮,想看看程序是否取到了我刚才更改后的单元格的内容,就是这么简单。
支持(0) 反对(0) 电脑者 | 园豆:2 (初学一级) | 2010-12-17 11:11
那你去看基础教程吧,我上面给你的那个,是不是更改了,你看看你数据库更改了没有不就行了?
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2010-12-17 11:13
哎。我又没有写操作数据库的update 语句怎么会更改数据库呢?我现在就是想获取编辑单元格内的更改后的内容,然后response.write到页面上用来验证我写的语句是否能真正获取到修改后的单元格内的内容,但是总是显示更改前的单元格内的内容。 我这样说还不明白么?
支持(0) 反对(0) 电脑者 | 园豆:2 (初学一级) | 2010-12-17 11:20
明白啊,那你就按我上面说的,暂时先存到session里面,然后updated以后再验证,HTTP协议时没状态的,服务器也不会给你保存状态,你这样直接输出到客户端,你要知道,输出以后,服务器上的这个页面已经没有了,谁知道你改的是什么啊?
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2010-12-17 11:25
刚才我自己试了一下,在updating事件里面保存到viewstate里面,然后ipdated以后输出,内容正确。
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2010-12-17 12:01
0

你每次Page_load的时候都去getdata()!!

自己把断点设置在Page_Load和另外几个事件处理程序里

然后操作一次,就知道这几个事件的执行先后顺序了

然后就会明白,为什么每次都是看到原始的数据

然后就可以在对应的某个事件处理程序里获得你想要的编辑后提交到服务端的值

徐少侠 | 园豆:293 (菜鸟二级) | 2010-12-17 11:42
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { string name = ((TextBox)GridView1.Rows[e.RowIndex].Cells[5].Controls[0]).Text.ToString(); Response.Write(name); } 如果这个是在Page_Load之后运行的,猜猜结果会如何?
支持(0) 反对(0) 徐少侠 | 园豆:293 (菜鸟二级) | 2010-12-17 11:47
0

是不是一直取到原来的值,如果是的话,很明显应该是少了个!ispostback

Lee_Jelen | 园豆:180 (初学一级) | 2010-12-18 11:08

你正中要害呀,我今天也遇到了楼主一样的问题,嘿嘿,初学者总是容易忘掉这一点呢

支持(0) 反对(0) wjtyh | 园豆:200 (初学一级) | 2012-03-31 22:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册