我用C#.NET写的程序,使用DataGrid控件,想对该表进行编辑,我使用的代码是:string a=((TextBox)e.Item.Cells[3].Controls[0]).Text;但是在实行时,却没有实现更新,而直接对a赋值,则可以更新。即:string a="asp";执行原来的程序则有更新,是为什么?为什么取不到DataGrid中修改后的值呢(只取的原来的值)?请各位帮帮忙。

解决方案 »

  1.   

    更新后你没有重新绑定数据吧?给个示例代码:private void dgdBranch_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    if(this.EmpRightCode  >= 3)
    {
    int index = e.Item.ItemIndex;
    int braID = Convert.ToInt16(dgdBranch.DataKeys[index].ToString(),10); string s1 = ((TextBox)e.Item.Cells[0].Controls[0]).Text;
    string s2 = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
    if(!ValidateUtil.isBlank(s1))
    {
    bool result = (new DepSystem()).UpdateMrBranch(braID,s1,s2);
    this.WriteOptLog("修改机构"+s1+"信息");
    dgdBranch.EditItemIndex = -1;
    dgdBranch.DataBind();
    }
    else
    JScript.Alert ("机构名称不能为空!");
    }
    else
    JScript.Alert("您没有权限进行此操作!");
    }
      

  2.   

    <asp:TemplateColumn HeaderText="下载名:">
    <ItemTemplate>
    <asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ts_num") %>'>
    </asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox id=TextBox1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ts_num") %>'>
    </asp:TextBox>
    <asp:RequiredFieldValidator id="CompareValidator1" runat="server" ErrorMessage="必须字符" Display="Dynamic" ControlToValidate="TextBox1"></asp:RequiredFieldValidator>
    </EditItemTemplate>
    上面是前台的
    //更新
    private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    //string empid = this.datagrid1.DataKeys[e.Item.ItemIndex].ToString();

    string filename = ((TextBox)(e.Item.Cells[4].Controls[0])).Text; label.Text=filename;

    /*
    OleDbConnection con = new OleDbConnection(conn.connstring);
    OleDbCommand com = new OleDbCommand("UPDATE ts SET ts_num='"+filename+"' where id="+empid,con);
    con.Open();
    com.ExecuteNonQuery();
           con.Close();
    this.db();
             
    this.datagrid1.EditItemIndex = -1;  //更新之后,索引值要设回初值,未选索引.
    this.db();
    */}
    上面是后台比如本来值是8我把它改成110可是点了更新后lebel显示8,这是为什么啊?应该是110啊,这是那里错了???
      

  3.   

    string filename = ((TextBox)(e.Item.Cells[4].Controls[0])).Text;
    上面是我取的点编辑时文本框的值
    label.Text=filename;比如编辑时本来值是8我把它改成110可是点了更新后lebel显示8,这是为什么啊?应该是110啊,这是那里错了???
      

  4.   

    断点调试跟踪一下看看filename有没有取到值。
      

  5.   

    估计是没把绑定写好
    Page_load()
    {
       if(!Page.IsPostBack)
          {
              BindYourData();//在这里绑定DATAGRID数据.
            }}
      

  6.   

    搞定了,是没有加 if(!Page.IsPostBack)所以每次都给它绑定被初始化了,晕倒!!!!!!!!!!!